HashMapweakHashMapLinkedHashMap和TreeMap四者区别与联系
Posted 享叔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMapweakHashMapLinkedHashMap和TreeMap四者区别与联系相关的知识,希望对你有一定的参考价值。
一.HashMap
特性:
1.HashMap是基于Key-Value的散列表(JDK7:数组+链表,JDK8:数组+链表+红黑树),采用拉链法实现的。一般用于单线程当中,非线程安全,HashMap的键是"强键"。
2.继承于抽象类AbstractMap,并且实现Map接口。遍历时,取得的数据完全是随机的。
3.默认容量大小是16,加载因子是0.75。
4.最多只允许一条key为Null,允许多条value为Null。
5.HashMap实现了Cloneable和Serializable接口,而WeakHashMap没有。
1).HashMap实现Cloneable,说明它能通过clone()克隆自己。
2).HashMap实现Serializable,说明它支持序列化,能通过序列化去传输。
6.添加、删除操作时间复杂度都是O(1)。
二.weakHashMap
特性:
1.weakHashMap是基于Key-Value的散列表(数组+链表),采用拉链法实现的。一般用于单线程当中,非线程安全,weakHashMap中的键是"弱键"。
备注:当"弱键"被GC会收时,它对应的键值也会从weakHashMap中删除。
2.继承于抽象类AbstractMap,并且实现Map接口。
3.默认容量大小是16,加载因子是0.75。
4.最多只允许一条key为Null,允许多条value为Null。
三.LinkedHashMap
特性:
1.LinkedHashMap是基于双向链表散列。
2.遍历时按照插入的顺序或者访问的顺序进行遍历。
3.添加、删除操作时间复杂度都是O(1)。
4.最多只允许一条key为Null,允许多条value为Null。
四.TreeMap
特性:
1.TreeMap是有序的散列表(数组+链表),采用的是红黑树实现。一般用于单线程中存储有序的映射。
2.添加、删除操作时间复杂度都是O(log(n))。
3.只允许value为Null,key不能为Null。
4.TreeMap实现SortedMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。
Reference:
http://www.jianshu.com/p/24f5bd05b860
http://blog.csdn.net/chenssy/article/details/26668941
以上是关于HashMapweakHashMapLinkedHashMap和TreeMap四者区别与联系的主要内容,如果未能解决你的问题,请参考以下文章