Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 2e9c43658e374d290a2de15d25134ac8 > files > 445

db4o-doc-8.0-1.fc15.i686.rpm

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" MadCap:lastBlockDepth="2" MadCap:lastHeight="120" MadCap:lastWidth="624" MadCap:disableMasterStylesheet="true" MadCap:tocPath="Advanced Features|Type Handling|Collections" MadCap:InPreviewMode="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" MadCap:PathToHelpSystem="../../../../" MadCap:HelpSystemFileName="index.xml" MadCap:SearchType="Stem">
    <head><title>Big Set</title>
        <script type="text/javascript">/* <![CDATA[ */
window.onload = function(){
	var pathToFlash = $('html').attr('MadCap:PathToHelpSystem') + 'Content/Resources/Code/ZeroClipboard.swf';
	ZeroClipboard.setMoviePath(pathToFlash);
			
	function bindToClipBord(element,content){
		var clip = new ZeroClipboard.Client();
		clip.setText(content);
		clip.glue(element);
	};
		
	if(location.protocol==='file:'){
		$('.copylink-marker').remove();
	} else{
			$('.copylink-marker').each(function(){
				var text = $(this).parent().parent().children('.prettyprint').html();
				$(this).hover(function(){
					bindToClipBord(this,text);
				},
				function(){});
			});	
	}		
	prettyPrint();	
};
                /* ]]> */</script>
        <link href="../../../SkinSupport/MadCap.css" rel="stylesheet" />
        <link href="../../../Resources/Stylesheets/OnlineStyle.css" rel="stylesheet" />
        <script src="../../../Resources/Code/prettify.js">
        </script>
        <script src="../../../Resources/Code/lang-vb.js">
        </script>
        <script src="../../../Resources/Code/jquery.min.js">
        </script>
        <script src="../../../Resources/Code/ZeroClipboard.js">
        </script>
        <script src="../../../SkinSupport/MadCapAll.js" type="text/javascript">
        </script>
    </head>
    <body>
        <p class="MCWebHelpFramesetLink" style="display: none;"><a href="../../../../index_CSH.html#advanced_topics/type_handling/collections/big_set.htm" style="">Open topic with navigation</a>
        </p>
        <div class="MCBreadcrumbsBox"><span class="MCBreadcrumbsPrefix">You are here: </span><a class="MCBreadcrumbsLink" href="../../../advanced_topics.htm">Advanced Features</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="../../type_handling.htm">Type Handling</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="../collections.htm">Collections</a><span class="MCBreadcrumbsDivider"> &gt; </span><span class="MCBreadcrumbs">Big Set</span>
        </div>
        <p>
            <script type="text/javascript">/*<![CDATA[*/document.write('<a href="' + location.href +'">');
				document.write("Direct Link");
			document.write('</a>');/*]]>*/</script>
        </p>
        <p>
        </p>
        <h1>Big Set</h1>
        <p>When you need to store large sets, you can use db4o's big set. This big-set operates directly on top of B-trees, which are also used for indexes. The big-set doesn't need to activate all items to perform its operations. For example when you check if the set already contains a member, the big-set can do that without activating all its items. Especially lookup-operation like contains perform much faster with a big set.</p>
        <p>Not that currently the big set implementation only works in embedded-mode, but not in client-server mode.</p>
        <p>You can create a new big-set with the CollectionFactory:</p>
        <div class="codesnippet" MadCap:conditions="Primary.c#">
            <pre class="prettyprint" xml:space="preserve">ICollection&lt;Person&gt; citizen = CollectionFactory.ForObjectContainer(container).NewBigSet&lt;Person&gt;();
// now you can use the big-set like a normal set:
citizen.Add(new Person("Citizen Kane"));</pre>
            <div class="codesnippet-meta">BigSetExample.cs: Crate a big-set instance
			<div class="codedownload"><a href="../../../CodeExamples/collections/bigset/Example-collections-bigset-csharp.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <div class="codesnippet" MadCap:conditions="Primary.VB.NET">
            <pre class="prettyprint lang-vb" MadCap:conditions="Primary.Online" xml:space="preserve">Dim citizen As ICollection(Of Person) = _
    CollectionFactory.ForObjectContainer(container).NewBigSet(Of Person)()
' now you can use the big-set like a normal set:
citizen.Add(New Person("Citizen Kane"))</pre>
            <div class="codesnippet-meta">BigSetExample.vb: Crate a big-set instance
			<div class="codedownload"><a href="../../../CodeExamples/collections/bigset/Example-collections-bigset-vb.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <p>After that, the big-set behaves just like an ordinary set. Except that the big-set used the object-identity instead of the object-equality to compare the items. So when you add a equal object with a different identity, it will be added to the set. You can add, remove and iterate over the items or check if an item is already in the set. The items will be loaded and activated on demand, for example when you iterate over the set.</p>
        <div class="codesnippet" MadCap:conditions="Primary.c#">
            <pre class="prettyprint" xml:space="preserve">Person aCitizen;
using (IEnumerator&lt;Person&gt; aCitizenEnumerator = city.Citizen.GetEnumerator())
{
    aCitizenEnumerator.MoveNext();
    aCitizen = aCitizenEnumerator.Current;
}
Console.WriteLine("The big-set uses the identity, not equality of an object");
Console.WriteLine("Therefore it .contains() on the same person-object is "
                  + city.Citizen.Contains(aCitizen));
Person equalPerson = new Person(aCitizen.Name);
Console.WriteLine("Therefore it .contains() on a equal person-object is "
                  + city.Citizen.Contains(equalPerson));</pre>
            <div class="codesnippet-meta">BigSetExample.cs: Note that the big-set compares by identity, not by equality
			<div class="codedownload"><a href="../../../CodeExamples/collections/bigset/Example-collections-bigset-csharp.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <div class="codesnippet" MadCap:conditions="Primary.VB.NET">
            <pre class="prettyprint lang-vb" MadCap:conditions="Primary.Online" xml:space="preserve">Dim aCitizen As Person
Using aCitizenEnumerator As IEnumerator(Of Person) = city.Citizen.GetEnumerator()
    aCitizenEnumerator.MoveNext()
    aCitizen = aCitizenEnumerator.Current
End Using
Console.WriteLine("The big-set uses the identity, not equality of an object")
Console.WriteLine("Therefore it .contains() on the same person-object is " &amp; city.Citizen.Contains(aCitizen))
Dim equalPerson As New Person(aCitizen.Name)</pre>
            <div class="codesnippet-meta">BigSetExample.vb: Note that the big-set compares by identity, not by equality
			<div class="codedownload"><a href="../../../CodeExamples/collections/bigset/Example-collections-bigset-vb.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <script type="text/javascript" src="../../../SkinSupport/MadCapBodyEnd.js">
        </script>
    </body>
</html>