Collection中的Set

Set定义:

        一个集合里没有重复元素。确切的说:Sets中不存在这样的一对元素e1和e2,使得e1.equals(e2),同时最多含有一个null元素。模型是数学中的set.


Set结构层次:

         Collection-->Set-->AbstractSet-->HashSet;

         Collection-->Set-->AbstractSet-->LinkedHashSet;

         Collection-->Set-->SortedSet-->TreeSet;

         Collection-->Set-->AbstractSet-->TreeSet


Set与List的选择:

         链表和数组能够确定元素的顺序。如果:你要操找某元素,又不确定它的顺序,则需要访问所有元素,直到匹配。如果你在意顺序,你采用List,如果你不在意元素的顺序,Set会是很好的选择!因为"散列表"这种数据结构让你快速的查找对象。同时Set有一实现:HashSet采用了这种数据结构。关于散列表,请查看相关数据结构的书籍!注意:当你改变散列集中的元素时,如果被改变的元素的散列码也要改变,那么元素在数据结构中的位置也要做相应的变化。

 

 

HashSet和TreeSet的选择:

              TreeSet是一个有序集合!它是以红-黑树数据结构来实现的。每当一个元素调价到TreeSet中,该元素会被放置到恰当的排序位置。迭代器总是按照排序后的顺序来访问各个元素。它添加元素的速度比HashSet慢,比Array,List快!对象的比较:TreeSet假设你插入的元素实现了Comparable接口!对同一类,可以通过实现Comparator定制不同的比较策略!选择的标准是:你所保存的对象需不需要对数据进行排序!

 


HashSet添加元素时会调用多少个方法?

                  首先:hashcode()方法,计算对象的散列码,如果存在这样的散列表元则调用equals()方法,判断散列表单元是否有equals对象,没有,实行插入,否则,插入失败!

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值