21天精通java基础之Day13集合Set接口

26 篇文章 0 订阅

Day13:集合(Set)


Set:存储的元素是无序的,不可重复的

1.无序性:无序性!=随机性。真正的无序性,指的是元素在底层存储的位置是无序的。

2:不可重复性。当向Set中添加进相同的元素的时候,后面的不能添加进去。

说明:要求添加进Set中的元素所在的类,一定要重写equals()和hashCode()方法,进而保证Set中元素的不可重复性。set中存储元素使用哈希算法,当向Set中添加对象时,首先调用此对象所在类的hashCode()方法,计算此对象的哈希值,此哈希值决定了此对象在Set中的存储位置。若此位置之前没有对象存储,则这个对象直接存储到此位置。若此位置已有对象存储,再通过equals()方法比较这两个对象是否相同。如果相同,后一个对象就不能再添加进来。

返回false,都存储。要求:hashCode()要与equals()方法一致。


LinkedHashSet:

使用链表维护了一个添加进集合中的顺序。导致遍历LinkedHashSet集合元素时,是按照添加进去的顺序遍历的。插入性能略低于HashSet,但在迭代访问Set里的全部元素是又很好的性能。


TreeSet:

1:向TreeSet中添加的元素必须是同一个类的。

2:可以按照添加进集合中的元素的指定的顺序遍历。像String,包装类默认按照从小到达的顺序遍历。

3:当向TreeSet中添加自定义类的对象时,有两种排序方法,①自然排序②定制排序

4:自然排序:要求自定义类实现java.lang.Comparable接口并重写其compareTo(Object obj)方法,在此方法中,指明按照自定义类的哪个属性进行排序。

5:向TreeSet中添加元素时,首先按照compareTo()进行比较,一旦返回0,虽然仅是两个对象的属性值相同,但是程序会认为这两个对象是相同的,进而后一个对象就不能添加进来。

6.定制排序:①创建一个实现了Comparator接口的类对象。②将此对象作为形参传递给TreeSet的构造器中。③向TreeSet中添加Comparator接口中的compare方法中涉及的类的对象。

注意:compare()与hashCode()以及equals()三者保持一致!

compareTo就是比较两个值,如果前者大于后者,返回1,等于返回0,小于返回-1




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值