原文网址:HashMap,TreeMap,linkedHashMap的区别_IT利刃出鞘的博客-CSDN博客
简介本文介绍Java的HashMap、TreeMap、linkedHashMap之间的区别。
相同点- 都属于Map;
- Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。
- 都是线程不安全的
| 项 | HashMap | TreeMap | linkedHashMap |
| null | 只允许一条记录的key值为Null(多条会覆盖); 允许多条记录的Value为 Null。 | 不允许key的值为null | key和value均允许为null |
| 数据结构 | 数组+链表+红黑树 (put和get操作,基本上可以达到常数时间的性能) | 红黑树。 (get或put操作的时间复杂度是O(log(n))) | HashMap+双向链表 此类是HashMap的子类。 |
| 按key排序 | 不支持。 按照hashCode进行输出。 | 支持排序。 默认按key升序排序。可用Comparator自定义排序。 用Iterator 遍历TreeMap时,结果是排过序的。 | 不支持。 |
| 按插入顺序存放 | 不支持 | 不支持。 | 支持。 遍历时,按插入的顺序出结果。 |



