java中关于如何对TreeSet进行排序的两种方式

这是第一篇java博客

这是一篇关于java中如何对TreeSet进行排序的两种方式。

关于TreeSet
TreeSet集合是可以给元素进行重新排序的一个Set接口的实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的Comparator进行排序,具体取决于使用的构造方法。 存储特点: 无序存储,排重,通过二叉树实现的集合,可以给元素进行重新排序。

 TreeSet<Person> t1 = new TreeSet<Person>() ;
        t1.add(new Person("chen", 20));
        t1.add(new Person("chen", 19));
        t1.add(new Person("chen", 199));
        Iterator<Person> p1 = t1.iterator();
        while (p1.hasNext()) {
            System.out.println(p1.next());
        }

添加元素:姓名和年龄,通过年龄对元素进行比较
第一种方式
自定义比较器:

public class My1 implements Comparator <Person>{
    @Override
    public int compare(Person o1, Person o2) {
        int num=o1.getAge()-o2.getAge();
        return num;
    }
}

新建一个比较器,继承Comparator比较类,里面写比较规则,我写的是如果前一个的age比后一个大,就返回第一个,也就是升序。main代码修改:

         TreeSet<Person> t1 = new TreeSet<Person>() ;
        == 改为==
        `TreeSet<Person> t1 = new TreeSet<Person>(new My1());`
       ==  main方法更新后:==  
         TreeSet<Person> t1 = new TreeSet<Person>(new My1());
         t1.add(new Person("chen", 20));
         t1.add(new Person("chen", 19));
         t1.add(new Person("chen", 199));
         Iterator<Person> p1 = t1.iterator();
        while (p1.hasNext()) {
        System.out.println(p1.next());
      }

第二种方法
自然排序:
Person类中实现 Comparable接口,重写Comparable接口中的Compareto方法

   TreeSet<Person> t1 = new TreeSet<Person>(new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                int num=o1.getAge()-o2.getAge();
                return num;
            }
        });
        t1.add(new Person("chen", 20));
        t1.add(new Person("chen", 19));
        t1.add(new Person("chen", 199));
        Iterator<Person> p1 = t1.iterator();
        while (p1.hasNext()) {
            System.out.println(p1.next());
        }

结果为:
这是最后排序之后的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值