HybridDictionary.Add Method
Assembly: System (in system.dll)
An object that has no correlation between its state and its hash code value should typically not be used as the key. For example, String objects are better than StringBuilder objects for use as keys.
A key cannot be a null reference (Nothing in Visual Basic), but a value can.
You can also use the Item property to add new elements by setting the value of a key that does not exist in the HybridDictionary; for example, myCollection["myNonexistentKey"] = myValue. However, if the specified key already exists in the HybridDictionary, setting the Item property overwrites the old value. In contrast, the Add method does not modify existing elements.
When the number of elements becomes greater than the optimal size for a ListDictionary, the elements are copied from the ListDictionary to a Hashtable. However, this only happens once. If the collection is already stored in a Hashtable and the number of elements falls below the optimal size for a ListDictionary, the collection remains in the Hashtable.
This method is an O(1) operation.
The following code example adds to and removes elements from a HybridDictionary.
#using <System.dll> using namespace System; using namespace System::Collections; using namespace System::Collections::Specialized; void PrintKeysAndValues( IDictionary^ myCol ) { Console::WriteLine( " KEY VALUE" ); IEnumerator^ myEnum = myCol->GetEnumerator(); while ( myEnum->MoveNext() ) { DictionaryEntry de = safe_cast<DictionaryEntry>(myEnum->Current); Console::WriteLine( " {0,-25} {1}", de.Key, de.Value ); } Console::WriteLine(); } int main() { // Creates and initializes a new HybridDictionary. HybridDictionary^ myCol = gcnew HybridDictionary; myCol->Add( "Braeburn Apples", "1.49" ); myCol->Add( "Fuji Apples", "1.29" ); myCol->Add( "Gala Apples", "1.49" ); myCol->Add( "Golden Delicious Apples", "1.29" ); myCol->Add( "Granny Smith Apples", "0.89" ); myCol->Add( "Red Delicious Apples", "0.99" ); myCol->Add( "Plantain Bananas", "1.49" ); myCol->Add( "Yellow Bananas", "0.79" ); myCol->Add( "Strawberries", "3.33" ); myCol->Add( "Cranberries", "5.98" ); myCol->Add( "Navel Oranges", "1.29" ); myCol->Add( "Grapes", "1.99" ); myCol->Add( "Honeydew Melon", "0.59" ); myCol->Add( "Seedless Watermelon", "0.49" ); myCol->Add( "Pineapple", "1.49" ); myCol->Add( "Nectarine", "1.99" ); myCol->Add( "Plums", "1.69" ); myCol->Add( "Peaches", "1.99" ); // Displays the values in the HybridDictionary in three different ways. Console::WriteLine( "Initial contents of the HybridDictionary:" ); PrintKeysAndValues( myCol ); // Deletes a key. myCol->Remove( "Plums" ); Console::WriteLine( "The collection contains the following elements after removing \"Plums\":" ); PrintKeysAndValues( myCol ); // Clears the entire collection. myCol->Clear(); Console::WriteLine( "The collection contains the following elements after it is cleared:" ); PrintKeysAndValues( myCol ); } /* This code produces the following output. Initial contents of the HybridDictionary: KEY VALUE Seedless Watermelon 0.49 Nectarine 1.99 Cranberries 5.98 Plantain Bananas 1.49 Honeydew Melon 0.59 Pineapple 1.49 Strawberries 3.33 Grapes 1.99 Braeburn Apples 1.49 Peaches 1.99 Red Delicious Apples 0.99 Golden Delicious Apples 1.29 Yellow Bananas 0.79 Granny Smith Apples 0.89 Gala Apples 1.49 Plums 1.69 Navel Oranges 1.29 Fuji Apples 1.29 The collection contains the following elements after removing "Plums": KEY VALUE Seedless Watermelon 0.49 Nectarine 1.99 Cranberries 5.98 Plantain Bananas 1.49 Honeydew Melon 0.59 Pineapple 1.49 Strawberries 3.33 Grapes 1.99 Braeburn Apples 1.49 Peaches 1.99 Red Delicious Apples 0.99 Golden Delicious Apples 1.29 Yellow Bananas 0.79 Granny Smith Apples 0.89 Gala Apples 1.49 Navel Oranges 1.29 Fuji Apples 1.29 The collection contains the following elements after it is cleared: KEY VALUE */
import System.*;
import System.Collections.*;
import System.Collections.Specialized.*;
public class SamplesHybridDictionary
{
public static void main(String[] args)
{
// Creates and initializes a new HybridDictionary.
HybridDictionary myCol = new HybridDictionary();
myCol.Add("Braeburn Apples", "1.49");
myCol.Add("Fuji Apples", "1.29");
myCol.Add("Gala Apples", "1.49");
myCol.Add("Golden Delicious Apples", "1.29");
myCol.Add("Granny Smith Apples", "0.89");
myCol.Add("Red Delicious Apples", "0.99");
myCol.Add("Plantain Bananas", "1.49");
myCol.Add("Yellow Bananas", "0.79");
myCol.Add("Strawberries", "3.33");
myCol.Add("Cranberries", "5.98");
myCol.Add("Navel Oranges", "1.29");
myCol.Add("Grapes", "1.99");
myCol.Add("Honeydew Melon", "0.59");
myCol.Add("Seedless Watermelon", "0.49");
myCol.Add("Pineapple", "1.49");
myCol.Add("Nectarine", "1.99");
myCol.Add("Plums", "1.69");
myCol.Add("Peaches", "1.99");
// Displays the values in the HybridDictionary in three different ways.
Console.WriteLine("Initial contents of the HybridDictionary:");
PrintKeysAndValues(myCol);
// Deletes a key.
myCol.Remove("Plums");
Console.WriteLine("The collection contains the following elements"
+ " after removing \"Plums\":");
PrintKeysAndValues(myCol);
// Clears the entire collection.
myCol.Clear();
Console.WriteLine("The collection contains the following elements"
+ " after it is cleared:");
PrintKeysAndValues(myCol);
} //main
public static void PrintKeysAndValues(IDictionary myCol)
{
IEnumerator objEnum = myCol.GetEnumerator();
Console.WriteLine(" KEY VALUE");
while (objEnum.MoveNext()) {
DictionaryEntry de = (DictionaryEntry)objEnum.get_Current();
Console.WriteLine(" {0,-25} {1}", de.get_Key(), de.get_Value());
}
Console.WriteLine();
} //PrintKeysAndValues
} //SamplesHybridDictionary
/*
This code produces the following output.
Initial contents of the HybridDictionary:
KEY VALUE
Strawberries 3.33
Yellow Bananas 0.79
Cranberries 5.98
Grapes 1.99
Granny Smith Apples 0.89
Seedless Watermelon 0.49
Honeydew Melon 0.59
Red Delicious Apples 0.99
Navel Oranges 1.29
Fuji Apples 1.29
Plantain Bananas 1.49
Gala Apples 1.49
Pineapple 1.49
Plums 1.69
Braeburn Apples 1.49
Peaches 1.99
Golden Delicious Apples 1.29
Nectarine 1.99
The collection contains the following elements after removing "Plums":
KEY VALUE
Strawberries 3.33
Yellow Bananas 0.79
Cranberries 5.98
Grapes 1.99
Granny Smith Apples 0.89
Seedless Watermelon 0.49
Honeydew Melon 0.59
Red Delicious Apples 0.99
Navel Oranges 1.29
Fuji Apples 1.29
Plantain Bananas 1.49
Gala Apples 1.49
Pineapple 1.49
Braeburn Apples 1.49
Peaches 1.99
Golden Delicious Apples 1.29
Nectarine 1.99
The collection contains the following elements after it is cleared:
KEY VALUE
*/
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.