HybridDictionary尝试优化哈希表。它实现了链表和哈希表数据结构。当集合较小时,它通过使用 ListDictionary 来实现 IDictionary,当集合较大时,它使用 Hashtable。
HybridDictionary 类的属性:
- 对于字典中元素数量未知的情况,建议使用此类。
- 它利用了改进的性能ListDictionary具有小型集合,并提供切换到哈希表它比 ListDictionary 更好地处理更大的集合。
- 如果集合的初始大小大于 ListDictionary 的最佳大小,则集合将存储在哈希表中,以避免将元素从 ListDictionary 复制到哈希表的开销。
- 键不能为空,但值可以。
Constructors
构造函数 | 说明 |
---|---|
HybridDictionary() | 创建一个空的区分大小写的 HybridDictionary。 |
HybridDictionary(Boolean) | 创建一个具有指定大小写敏感性的空HybridDictionary。 |
混合字典(Int32) | 创建具有指定初始大小的区分大小写的HybridDictionary。 |
混合字典(Int32,布尔值) | 创建具有指定初始大小和区分大小写的HybridDictionary。 |
例子:
// C# code to create a HybridDictionary
// with the specified initial size
// and case sensitivity.
using System;
using System.Collections;
using System.Collections.Specialized;
class GFG {
// Driver code
public static void Main()
{
// Creating a HybridDictionary with the
// specified initial size and case sensitivity.
HybridDictionary myDict = new HybridDictionary(10, false);
// Adding key/value pairs in myDict
myDict.Add("I", "first");
// This will not raise exception as the
// Collection is not case-insensitive
myDict.Add("i", "first");
myDict.Add("II", "second");
myDict.Add("III", "third");
myDict.Add("IV", "fourth");
myDict.Add("V", "fifth");
// Displaying the key/value pairs in myDict
foreach(DictionaryEntry de in myDict)
Console.WriteLine(de.Key + " " + de.Value);
}
}
输出:
III third V fifth II second i first I first IV fourth
Properties
属性 | 说明 |
---|---|
Count | 获取 HybridDictionary 中包含的键/值对的数量。 |
IsFixedSize | 获取一个值,该值指示 HybridDictionary 是否具有固定大小。 |
IsReadOnly | 获取一个值,该值指示HybridDictionary是否为只读。 |
IsSynchronized | 获取一个值,该值指示 HybridDictionary 是否已同步(线程安全)。 |
项目[对象] | 获取或设置与指定键关联的值。 |
Keys | 获取包含 HybridDictionary 中的键的 ICollection。 |
SyncRoot | 获取可用于同步对 HybridDictionary 的访问的对象。 |
Values | 获取包含 HybridDictionary 中的值的 ICollection。 |
示例 1:
// C# code to get the number of key/value
// pairs contained in the HybridDictionary.
using System;
using System.Collections;
using System.Collections.Specialized;
class GFG {
// Driver code
public static void Main()
{
// Creating a HybridDictionary named myDict
HybridDictionary myDict = new HybridDictionary();
// Adding key/value pairs in myDict
myDict.Add("Australia", "Canberra");
myDict.Add("Belgium", "Brussels");
myDict.Add("Netherlands", "Amsterdam");
myDict.Add("China", "Beijing");
myDict.Add("Russia", "Moscow");
myDict.Add("India", "New Delhi");
// To get count of key/value pairs in myDict
Console.WriteLine("Total key/value pairs in myDict are : "
+ myDict.Count);
}
}
输出:
Total key/value pairs in myDict are : 6
示例 2:
// C# code to check whether the
// HybridDictionary is read-only.
using System;
using System.Collections;
using System.Collections.Specialized;
class GFG {
// Driver code
public static void Main()
{
// Creating a HybridDictionary named myDict
HybridDictionary myDict = new HybridDictionary();
// Adding key/value pairs in myDict
myDict.Add("A", "Apple");
myDict.Add("B", "Banana");
myDict.Add("C", "Cat");
myDict.Add("D", "Dog");
myDict.Add("E", "Elephant");
myDict.Add("F", "Fish");
// To check whether the HybridDictionary
// is read-only.
Console.WriteLine(myDict.IsReadOnly);
}
}
输出:
False
Methods
方法 | 说明 |
---|---|
Add(Object, Object) | 将具有指定键和值的条目添加到 HybridDictionary 中。 |
Clear() | 从 HybridDictionary 中删除所有条目。 |
Contains(Object) | 确定HybridDictionary是否包含特定 key 。 |
复制到(数组,Int32) | 将 HybridDictionary 条目复制到指定索引处的一维 Array 实例。 |
Equals(Object) | 确定指定对象是否等于当前对象。 |
GetEnumerator() | 返回一个迭代 HybridDictionary 的 IDictionaryEnumerator。 |
GetHashCode() | 用作默认的哈希函数。 |
GetType() | 获取当前实例的类型。 |
MemberwiseClone() | 创建当前对象的浅拷贝。 |
Remove(Object) | 从 HybridDictionary 中删除具有指定键的条目。 |
ToString() | 返回表示当前对象的字符串。 |
示例 1:
// C# code to copy the HybridDictionary
// entries to a one-dimensional Array
// instance at the specified index.
using System;
using System.Collections;
using System.Collections.Specialized;
class GFG {
// Driver code
public static void Main()
{
// Creating a HybridDictionary named myDict
HybridDictionary myDict = new HybridDictionary();
// Adding key/value pairs in myDict
myDict.Add("A", "Apple");
myDict.Add("B", "Banana");
myDict.Add("C", "Cat");
myDict.Add("D", "Dog");
myDict.Add("E", "Elephant");
myDict.Add("F", "Fish");
// Creating a one-dimensional Array named myArr
DictionaryEntry[] myArr = new DictionaryEntry[myDict.Count];
// copying the HybridDictionary entries
// to a one-dimensional Array instance
// at the specified index
myDict.CopyTo(myArr, 0);
for (int i = 0; i < myArr.Length; i++)
Console.WriteLine(myArr[i].Key + " --> " + myArr[i].Value);
}
}
输出:
A --> Apple B --> Banana C --> Cat D --> Dog E --> Elephant F --> Fish
示例 2:
// C# code to remove the entry
// with the specified key from
// the HybridDictionary.
using System;
using System.Collections;
using System.Collections.Specialized;
class GFG {
// Driver code
public static void Main()
{
// Creating a HybridDictionary named myDict
HybridDictionary myDict = new HybridDictionary();
// Adding key/value pairs in myDict
myDict.Add("A", "Apple");
myDict.Add("B", "Banana");
myDict.Add("C", "Cat");
myDict.Add("D", "Dog");
myDict.Add("E", "Elephant");
myDict.Add("F", "Fish");
// Displaying the number of key/value
// pairs in HybridDictionary myDict
Console.WriteLine("Number of key/value pairs in myDict are : "
+ myDict.Count);
// Removing the entry with the
// specified key from the HybridDictionary.
myDict.Remove("C");
// Displaying the number of key/value
// pairs in HybridDictionary myDict
Console.WriteLine("Number of key/value pairs in myDict are : "
+ myDict.Count);
}
}
输出:
Number of key/value pairs in myDict are : 6 Number of key/value pairs in myDict are : 5
参考:
相关用法
- C# HashSet用法及代码示例
- C# Hashtable用法及代码示例
- C# Hashtable和Dictionary的区别用法及代码示例
- C# String Clone()用法及代码示例
- C# String Compare()用法及代码示例
- C# String CompareOrdinal()用法及代码示例
- C# String CompareTo()用法及代码示例
- C# String Concat()用法及代码示例
- C# String Contains()用法及代码示例
- C# String Copy()用法及代码示例
- C# String CopyTo()用法及代码示例
- C# String EndsWith()用法及代码示例
- C# String Equals()用法及代码示例
- C# String Format()用法及代码示例
- C# String GetEnumerator()用法及代码示例
- C# String IndexOf()用法及代码示例
- C# String Insert()用法及代码示例
- C# String IsInterned()用法及代码示例
- C# String IsNormalized()用法及代码示例
- C# String IsNullOrEmpty()用法及代码示例
- C# String IsNullOrWhiteSpace()用法及代码示例
- C# String Join()用法及代码示例
- C# String LastIndexOf()用法及代码示例
- C# String LastIndexOfAny()用法及代码示例
- C# String Normalize()用法及代码示例
注:本文由纯净天空筛选整理自Sahil_Bansall大神的英文原创作品 C# | HybridDictionary Class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。