本文由本人對常見map接口下相關實現類進行整理,包括HashMap、HashTable、WeanHashMap、LinkedHashMap、TreeMap用表進行整理,一目瞭然,方便大家理解各map概念與用法。
是否有序 | 存儲形式 | 是否線程同步(安全) | 是否允許空(null)值 | 是否允許相同元素 | 其他特性 | |
HashMap | 無序 | 數組+鏈表 | 不同步 | 允許 | 鍵不重複,值可重複 | 無contains(Object value)方法 |
HashTable | 無序 | 數組+鏈表 | 同步 | 不允許(鍵值都不允許) | 鍵不重複,值可重複 | 有contains(Object value)方法 |
WeakHashMap | 無序 | 數組+鏈表 | 不同步 | 允許 | 鍵不重複,值可重複 | 弱引用,垃圾回收會自動清除不再被引用的鍵值對 |
LinkedHashMap | 有序(按 鍵 的插入順序排序) | 數組+鏈表 | 不同步 | 允許 | 鍵不重複,值可重複 | 記錄 鍵 的插入順序,按 鍵 的插入順序排序 |
TreeMap | 有序(默認升序) | 數組+鏈表 | 不同步 | 不允許鍵null,允許值null | 鍵不重複,值可重複 | 插入時按 鍵 自動排序 |