Map集合的实现类 | 您所在的位置:网站首页 › treemap查找 › Map集合的实现类 |
Map 接⼝的常⽤实现类:
1 、 HashMap 、 Hashtable ( t 是⼩写) HashMap 不是线程安全的, key 、 value 的值都可以是 null 。 Hashtable 是线程安全的, key 、 value 的值都不能是 null 。
HashMap 、 Hashtable 都是⽆序的。 如果要使⽤⾃定义的类(未继承 Java ⾃带的类)作为 key ,需要重写⾃定义类的 hashCode() 、 equals() 来保证集合中没有重复的 key 。类名中 含 hash 的集合,都要这样。
因为不必保证线程安全,所以 HaspMap 性能⽐ Hashtable 略⾼。 Hashtable 是很古⽼的⼀个类,命名不规范,问题较多。尽量少⽤ Hashtable 。即使要创建线程安全的 Map ,也尽量不要使⽤ Hashtable ,可 以使⽤ Collections ⼯具类把 HashMap 变成线程安全的。
2 、 LinkedHashMap LinkedHashMap 是 HashMap 的⼦类,使⽤⼀个双向链表来维护键值对的顺序(与添加顺序相同),维护的是 key 的顺序。 存储、查找仍是使⽤ hashCode 值来索引,遍历(迭代)才使⽤链表,就是说遍历时的顺序和添加元素的顺序相同。 因为内部维护了⼀个链表,所以查找、存储时 HashMap 性能⾼于 LinkedHashMap ,但遍历集合时 LinkedHashMap 性能较好。
|
CopyRight 2018-2019 实验室设备网 版权所有 |