HashTable的使用
import java.util.Hashtable;
?
public class HashTable {
? ?public static void main(String[] args) {
? ? ? ?Hashtable hashtable = new Hashtable();
// ? ? ? hashtable.put(null,1); //NullPointerException
// ? ? ? hashtable.put(1,null); //NullPointerException
? ? ? ?hashtable.put("Jack",1);
? ? ? ?hashtable.put("Tom",1);
? ? ? ?hashtable.put("Jack",2); ?//替换
? ? ? ?hashtable.put("Jack1",2); ?//替换
? ? ? ?hashtable.put("Jack2",2); ?//替换
? ? ? ?hashtable.put("Jack3",2); ?//替换
? ? ? ?hashtable.put("Jack4",2); ?//替换
? ? ? ?hashtable.put("Jack5",2); ?//替换
? ? ? ?hashtable.put("Jack6",2); ?//替换
? ? ? ?hashtable.put("Jack7",2); ?//替换
?
? ? ? ?System.out.println(hashtable);
? }
}
/*
1.底层有数组 Hashtable$Entry[] 初始化大小为 11
2.临界值 threshold 8 = 11 * 0.75
3.扩容: 按照自己的扩容机制来进行即可
4.执行方法 addEntry(hash, key, value, index);添加 K-V 封装到Entry
5.满足if (count >= threshold) 时,就进行扩容
6.int newCapacity = (oldCapacity << 1) + 1; //两倍加一的大小扩容
?
底层解读:
1.
? ?public synchronized V put(K key, V value) {
? ? ? ?// Make sure the value is not null
? ? ? ?if (value == null) {
? ? ? ? ? ?throw new NullPointerException();
? }
5.满足if (count >= threshold) { 扩容机制
int newCapacity = (oldCapacity << 1) + 1; //两倍加一
*/
| 版本 | 线程安全(同步) | 效率 | 允许null键null值 |
---|
HashMap | 1.2 | 不安全 | 高 | 允许 | Hashtable | 1.0 | 安全 | 较低 | 不允许 |
|