comparator使用案例
时间: 2024-03-01 09:21:49 浏览: 59
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 接口的一个简单示例。
阅读全文