hashmapkey值和键值可以为null,而hashtable不可以
hashmap是线程不安全的,hashtable是线程安全的
怎么样使用线程安全的hashmap?
用collections的同步方法
Map m = Collections.synchronizeMap(hashMap);
但是,这种方式是通过简单的加锁实现的,我们还有效率更高的实现方式,
我们也可以使用ConcurrentHashMap,
那么concurrentHashmap的数据结构是什么?hashmap的数据结构又是什么?
hashmap是数组+链表+红黑树的结构,拉链法。
concurrentHashMap的数据结构
jdk8以前
采用分段式锁,
jsk8,对节点采用分段,比之前的效率更高。