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/47907721LinkedHashMap
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.有序(底层是通过跳表来实现)