1 Vector and ArrayList
它们都是可以随机访问的。它们的区别是Vector是线程安全的,而ArrayList不是线程安全的。
2 HashMap的底层实现机制
2.1 底层数据结构
每一对key-value pair都有一个专门的数据结构来表示,即一个内部类Node<K,V>,
然后所有的key-value pair放在一个数组中,transient Node<K,V>[] table。
2.2 HashMap里面保存的数据
HashMap里面保存key value pare,并且还会生成hash值。不要被课本里面的用数组下标作为key的默认值所蒙蔽。
2.3 使用
2.3.1 HashMap里面是没有加同步机制的
2.4 计算hash的方法,即计算内部hash key的方法
hash key的计算是根据key来的,然后放入一个table中的一个bin中,bin中不同的key-value pair是通过key的不同来区分的。
也就是说,同一个bin中不允许出现两个相同的key。如果出现了的话,那么就是第二次冲突了。该HashMap处理二次冲突的办法很简单,就是直接将old value覆盖。
2.5 处理冲突的算法
冲突了的key-value pair都放在一个bin中,当bin中的成员总数小于8是,这个bin是一个链表,当bin中的成员总数大于等于8时,这个bin是一棵红黑树。
对于红黑树,插入和删除的时间复杂度都是O(logn)。
3 ConcurrentHashMap底层实现机制
3.1 底层的数据结构
3.2 ConcurrentHashMap里面保存的数据
3.3 使用
原文:http://www.cnblogs.com/hustdc/p/6475451.html