TreeSet的自定义类的自动排序

TreeSet是属于Set集合的一个集合,继承了Set的特点:无序不可重复,同时还具有自己的特性:可以使数据自动排序

如果想实现TreeSet集合的自动排序很简单(上代码)

public class Map06 {
    public static void main(String[] args) {
//        这个类型就不用进行实现接口的操作了,因为已经在源码上定义好了
        Set<Integer> set = new TreeSet<>();
        set.add(1);
        set.add(90);
        set.add(34);
        set.add(4);
        for(Integer i : set){
            System.out.println(i);
        }
   }
}

输出的结果是这样的1  4   34  90

就实现了数据的自动排序,也如上面所说Integer不用实现接口就能自动排序,因为已经在源码上定义了

但如果是自己定义的类想实现自动排序的话,就必须实现comparable接口

public class Map06 {
    public static void main(String[] args) {
Users u1 = new Users("zhangzz",20);
        Users u2 = new Users("zhangsa",20);
        Users u3 = new Users("mike",18);
        Users u4 = new Users("joke",12);

        Set<Users> set1 = new TreeSet<>();
        set1.add(u1);
        set1.add(u2);
        set1.add(u3);
        set1.add(u4);

        for(Users users : set1){
            System.out.println(users);
        }

    }

}
class Users implements Comparable<Users>{
    String name;
    int age;

    public Users(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Users{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Users u) {
        if(this.age == u.age){
            return this.name.compareTo(u.name);
        }else{
            return this.age - u.age;
        }



    }
}

这里是自己定义的Users类,想要里面的数据实现自动排序,就必须要实现comparable了,当然还要重写toString方法,要不然输出的就是内存地址了

在实现接口的同时还要进行重写里面的compareTo接口,内容是自己定义的,

这个需求是

按年龄的大小进行自动排序,如果年龄相同,则按name的大小顺序进行排序

因此运用for循环然后return输出,

以上就是TreeSet集合自定义类的自动排序问题了。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值