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/