Java学习笔记:Set集合

1、什么是Set接口?

Set接口是Collection接口的子接口,存放的元素无序且不允许重复(没有索引信息,不能调用.get()方法)

Set接口没有提供Collection接口额外的方法,也就是仍然使用Collection接口已经定义好的方法,这一点和List接口类似。

2、Set接口常用的实现类有:

HashSet:散列存放,无序;

TreeSet:有序存放,自然排序(并非按照存入顺序);

Set接口存、取、删对象都有很高的效率。

HashSet原理:根据每个对象的哈希码值(调用.hashCode( )获得)用固定的算放算出它的存储索引,把对象存放在hash表中的相应位置中;

存放对象时,首相获得该对象的hashCode值,与hash表中的值进行比较,如果不存在,则直接把该对象存入集合中,并把该hashCode值存入hash表中,此时add操作结束。如果存在则进行下面的计算:通过“==”操作符判断已经存入的对象与要存入的对象是否为同一对象,如果true则集合认为要添加相同对象,add失败。如果false则调用要添加对象的.equals( )方法,如果返回值为true则集合认为添加相同对象,add失败。否则添加成功。

TreeSet存储原理:存放时会调用集合元素的CompareTo( )方法,根据该方法的返回值来比较元素之间的大小,然后进行“升序”排序,这种排序方法我们称之为自然排序(升序排列)

注意:如果想要采用自然排序则要存储的对象所属类必须实现Comparable接口。该接口只有一个方法public int compareTo(Object obj),必须实现该方法。

 

完结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值