Set集合中的TreeSet

Set集合特点:

1.Set集合存储的元素不能重复,自动过滤掉重复元素;

2.Set集合是没有索引的,所以不能使用for循环来遍历,利用索引的增删改查都属不可以的

3.Set集合存取元素的顺序是不一致的.

TreeSet:

Set集合有的特点它都具有,但是它也有自己特有的特点,它可以根据规则将元素排序,在使用java已有的类时候,不需要制定规则,因为java提供了默认的规则.

一般我们有两种排序规则,一个是自然排序,一个是比较器排序

排序一般会有一个返回值,

返回值为负数表示存入元素是较小值,存左边.返回值为0则元素重复,不存入.返回值为正数元素是较大值,存右边.

自然排序:

在我们写自定义类的时候,就需要我们实现Comparable接口,并且重写compareTo方法,在我们创建TreeSet对象时就直接使用空参构造,在我们存储自定义类对象时,就会根据我们重写的compareTo方法来对对象进行排序

@Override
public int compareTo(Student o) {
    //根据年龄进行排序
    int i = this.age - o.age;
    return i;
}

其中的this.age表示正在存的元素,o.age表示已经存在在集合中的元素,i就是返回值,根据i的正负来判断大小,若i=0;则说明元素存在就不会存入了,this.age要和存入的元素多次比较才能确定自己存的位置.

一般来说不会只根据一个条件判断,而是多个条件结合起来判断

比较器排序:在自然排序不满足我们的需求是就需要比较器排序

1.TreeSet的带参构造方法使用比较器排序对元素进行排序的2.比较器排序,就是让集合接收Comparator的实现类对象,重写compare()方法,一定要按照主要条件和次要条件来写

 TreeSet<String > ts =new TreeSet<>(
     //匿名内部类接收Comparator的实现类对象,重写compare()方法
     new Comparator<String>() {
      @Override
      public int compare(String o1, String o2) {
          //主要条件:根据长度排序
          int i = o1.length() - o2.length();
          //次要条件:长度相同根据字典顺序排序
          i=i==0?o1.compareTo(o2):i;
          return i;
      }
  });

o1就是正在存入的字符串,o2就是已经存入的字符串,我们先将两个字符串长短进行比较,这是排序的主要条件,要是长度相同,则我们需要按照次要条件,就是字典顺序来排序

TreeSet主要是用到树结构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值