Comparator的使用

Comparator的使用

package com.etc.chapater0_1;

import java.util.Comparator;
import java.util.TreeSet;

/**
 * TreeSet的使用
 * Comparator:实现定制比较(比较器)
 * Comparable:可比较的
 *
 */
public class Demo06 {
    public static void main(String[] args) {
        TreeSet<Person> treeSet = new TreeSet<>(new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                int n1 = o1.getAge()-o2.getAge();
                int n2 = o2.getName().compareTo(o2.getName());
                return n1==0?n2:n1;
            }
        });
        Person p1 = new Person("liudehua",22);
        Person p2 = new Person("linzhilin",21);
        Person p3 = new Person("liaochaowei",25);
        Person p4 = new Person("lixiaolong",23);
        //添加
        treeSet.add(p1);
        treeSet.add(p2);
        treeSet.add(p3);
        treeSet.add(p4);
        System.out.println(treeSet.size());
        System.out.println(treeSet.toString());
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Comparator 是 Java 提供的一个接口,用于定义两个对象之间的比较规则。可以用于对集合中的元素进行排序或查找等操作。 下面是一个使用 Comparator 接口的示例,假设有一个学生类 Student,包含学生的姓名和年龄属性: ```java public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ``` 现在需要对一组学生对象进行排序,按照年龄从小到大排序。可以使用 Comparator 接口来定义比较规则: ```java import java.util.Comparator; public class AgeComparator implements Comparator<Student> { @Override public int compare(Student s1, Student s2) { return s1.getAge() - s2.getAge(); } } ``` 上面的代码定义了一个 AgeComparator 类,实现了 Comparator 接口,并重写了 compare 方法。在 compare 方法中,比较两个学生对象的年龄大小,如果 s1 的年龄小于 s2,则返回负数;如果 s1 的年龄等于 s2,则返回 0;如果 s1 的年龄大于 s2,则返回正数。 现在可以使用 AgeComparator 对象对一组学生对象进行排序: ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) { List<Student> students = new ArrayList<>(); students.add(new Student("Tom", 18)); students.add(new Student("Jerry", 20)); students.add(new Student("Alice", 19)); Collections.sort(students, new AgeComparator()); for (Student s : students) { System.out.println(s.getName() + " " + s.getAge()); } } } ``` 上面的代码中,先创建了一个包含三个学生对象的 List,然后使用 Collections.sort 方法对这个 List 进行排序,传入的第二个参数是一个 AgeComparator 对象,表示按照年龄从小到大排序。最后遍历排序后的 List,输出每个学生的姓名和年龄。 运行上面的代码,输出结果如下: ``` Tom 18 Alice 19 Jerry 20 ``` 可以看到,按照年龄从小到大排序后,学生对象的顺序发生了变化。这就是使用 Comparator 接口的一个简单示例。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值