HashTable
基本介绍
- 存放元素是键值对
- Hashtable的键和值都不能为null,否则会抛出NullPointerException
- Hashtable使用方法基本和HashMap一样
- Hashtable是线程安全的,HashMap是线程不安全的
扩容机制
- 底层数组HashTable$Entry[]初始化11
- 临界值threshould 8 = 11 * 0.75
- 扩容
- 执行方法sddEntry(hash,key,value,index);添加K-V封装到Entry
- 当if(count >= threshold)满足时,进行扩容
- 按照 int newCapacity = (oldCapacity << 1) + 1大小扩容
static Hashtable ht = new Hashtable(); //创建一个Hashtable实例
public void HashTablePra()
{
ht.add("E", "e");//添加keyvalue键值对
ht.add("A", "a");
ht.add("C", "c");
ht.add("B", "b");
string s = (string)ht["A"];
if (ht.Contains("E")) //判断哈希表是否包含特定键,其返回值为true或false
Console.WriteLine("the E key exist");
ht.remove("C");//移除一个keyvalue键值对
console.writeLine(ht["A"]);//此处输出a
console.writeLine(ht["A"]); //此处将不会有任何输出
ArrayList akeys = new ArrayList(ht.Keys); //别忘了导入System.Collections
akeys.sort(); //按字母顺序进行排序
foreach(string skey in akeys)
{
console.write(skey + ":");
console.writeLine(ht[skey]); //排序后输出
}
ht.clear();//移除所有元素
}