Java为数据结构中的映射定义了一个接口java.util.Map,包括3个实现类:HashMap、HashTable和TreeMap。
HashMap和HashTable都采用hash法进行索引,但二者还有一些区别。
HashMap | HashTable | |
安全性 | 不安全,不同步 | 安全,同步 |
key值 | 允许为null | 不允许为null |
contains方法 | 有containsValue | 有contains,containsKey,containsValue |
父类 | AbstractMao | Dictionary |
hash数组大小 | 默认是16,扩容是2*old | 默认是11,扩容方式是old*2+1 |
(1)HashMap存入键值对时是随机的
(2)TreeMap实现了SortMap接口,将元素根据可以排序
(3)LinkedHashMap是HashMap的子类,输入和输出相同
(4)WeakHashMap的key采用的是“弱引用”,只要WeakHashMap的key不再被外部引用,就被垃圾回收器回收。HashMap的key是“强引用”,只有key从hashMap中删除,才可以被垃圾回收器回收。