本文由本人对常见map接口下相关实现类进行整理,包括HashMap、HashTable、WeanHashMap、LinkedHashMap、TreeMap用表进行整理,一目了然,方便大家理解各map概念与用法。
是否有序 | 存储形式 | 是否线程同步(安全) | 是否允许空(null)值 | 是否允许相同元素 | 其他特性 | |
HashMap | 无序 | 数组+链表 | 不同步 | 允许 | 键不重复,值可重复 | 无contains(Object value)方法 |
HashTable | 无序 | 数组+链表 | 同步 | 不允许(键值都不允许) | 键不重复,值可重复 | 有contains(Object value)方法 |
WeakHashMap | 无序 | 数组+链表 | 不同步 | 允许 | 键不重复,值可重复 | 弱引用,垃圾回收会自动清除不再被引用的键值对 |
LinkedHashMap | 有序(按 键 的插入顺序排序) | 数组+链表 | 不同步 | 允许 | 键不重复,值可重复 | 记录 键 的插入顺序,按 键 的插入顺序排序 |
TreeMap | 有序(默认升序) | 数组+链表 | 不同步 | 不允许键null,允许值null | 键不重复,值可重复 | 插入时按 键 自动排序 |