常用Map梳理


HashMap

1.继承自AbstractMap,基于hash算法
2.支持null键和null值
3.线程不安全
4.无序


Hashtable

1.继承自 Dictionary(这个类已经过时),基于hash算法
2.在遇到null时,会抛出NullPointerException异常
3.线程安全(使用synchronized实现)
4.HashTable已经被淘汰了,不要在代码中再使用它


TreeMap

1.TreeMap并不是基于hash实现的;基于红黑树实现(实现NavigableMap接口)
2.TreeMap没有调优选项,因为红黑树总处于平衡状态。
3.适用于按自然顺序或自定义顺序遍历键(key)
4.在遇到null时,会抛出NullPointerException异常
5.非线程安全
6.HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap.
7.HashMap:适用于在Map中插入、删除和定位元素; Treemap:适用于按自然顺序或自定义顺序遍历键(key)。
参考自:https://blog.csdn.net/xlgen157387/article/details/47907721


LinkedHashMap

1.继承自 HashMap,基于
2.支持null键和null值
3.线程不安全
4.保持进入的顺序与被取出的顺序一致(LinkedHashMap内部维持了一个双向链表,可以保持顺序)


ConcurrentHashMap

1.继承自AbstractMap,基于hash算法
2.不支持null键和null值
3.线程安全()实现ConcurrentMap接口
4.无序


ConcurrentSkipListMap

1.继承自AbstractMap,基于hash算法
2.不支持null键和null值
3.线程安全()实现ConcurrentNavigableMap接口
4.有序(底层是通过跳表来实现)

https://gitee.com/mengzhang6/proxy-simple-demo

猜你喜欢

转载自my.oschina.net/mengzhang6/blog/1786778