java 中的集合(八) Set&&Map相关

先来回顾一下集合类的关系图(来源于:http://blog.csdn.net/ns_code/article/details/35564663):


下文为提纲挈领的内容,欲知详情,请看本系列后面的文章。

HashSet & LinkedHashSet & TreeSet

1.HashSet,LinkedHashSet,TreeSet都不是线程安全的。

2.HashSet无序,LinkedHashSet记录元素放入的顺序,TreeSet按照给定的比较规则自动排序,适用于需要按序遍历的情况(利用红黑树实现)。

3.HashSet,LinkedHashSet都允许一个空值,TreeSet视情况而定。

4.TreeSet默认情况下不允许元素重复,但如果不正确地设置了比较器,结果不可预测。

Map & Set

两者实现不同的功能,无须多说。Java中在实现Set时,通常利用内置的Map来实现。

具体为:HashMap->HashSet,LinkedHashMap->LinkedHashSet,NavigableMap(TreeMap)->TreeSet

注:NavigableMap是对SortedMap的扩展。

HashMap & LinkedHashMap & TreeMap & WeakHashMap

1.HashMap,LinkedHashMap,TreeMap都不是线程安全的。

2.HashMap无序,LinkedHashMap记录键值的顺序,TreeMap按照给定的比较规则对键值排序,适用于需要按序遍历的情况(利用红黑树实现)。

3.HashMap,LinkedHashMap都允许一个空键值,TreeMap视情况而定。

4.TreeMap默认情况下不允许键值重复,但如果不正确地设置了比较器,结果不可预测。

5.WeakHashMap与HashMap相比,主要差别在于,它是以弱键实现的Map,没有实现Cloneable, java.io.Serializable等接口。

Hashtable & HashMap

1.HashMap是非线程安全的,Hashtable是线程安全的(相对而言)。

2.HashMap的键允许有null值存在,而Hashtable则不行。

3.HashMap效率比Hashtable高。

4.Hashtable除了实现了Map接口,还继承了Dictionary抽象类(功能与Map类似,但较古老)。

5.扩容方式不同,HashMap做了很大优化。

6.hashcode方式不同,HashMap做了很大优化。

Hashtable,Properties & 其它

1.Vector,Stack,Hashtable(Vector,Stack不是Map,因出现较早,一并拿出来比较)都是jdk1.2之前的产物(新集合是1.2才有的),都有不太理想的线程同步实现,不太理想的扩容方式,一般不推荐使用。

2.新版本的Vector,Stack,Hashtable也支持Iterator遍历,但和旧版本代码掺杂在一起,可读性较差。(一开始都是使用Enumeration遍历,后来都加入了Iterator)

3.Properties继承了Hashtable,但只用于配置文件的映射。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值