hashmap和hashtable

1,hashtree的底层是红黑树,实现是键值对的排序,key必须实现Comparable接口(比如String就实现了)

2,hashmap用要利用hashcode和equal两个函数,Object已经实现,可以重写(比如string),先用hashcode找到哈希表的哈希桶,如果hash值相同,再用equal函数比较

3,hashmap可以运行键有一个null

4,hashmap的node容量为16,每一个hash桶容量为8,满了8就由链表优化成树,时间复杂度由,log(n)-》log(1),自动扩容因子为0.75

5,hashmap在并发下同时插入一个hashcode相同的值,或者扩容时候,后面的操作会覆盖前面的操作

6,hashtable在put,get方法加了锁了

7,

ConcurrentHashMap

ConcurrentHashMap引入segment的概念。Segment在实现上继承了ReentrantLock。
Java8中摒弃了segment了,使用CAS的算法。

SynchronizedMap

Collections.getSynchronizedMap()返回一个SynchronizedMap()对象,使用synchronized关键字来保证对Map的操作是多线程安全的。

效率

ConcurrentHashMap > (SynchronizedMap or HashTable)

入门:https://www.cnblogs.com/lchzls/p/6714689.html

全面:https://yemengying.com/2016/05/07/threadsafe-hashmap/

原文地址:https://www.cnblogs.com/vhyc/p/9222393.html