Comparator的使用

本文介绍了如何在Java中使用Comparator接口实现定制排序。通过创建Person类并重写toString方法,然后编写两个Comparator类,一个按name升序排序,另一个按age升序排序。在主类中,对Person对象数组进行两次不同排序并输出结果,强调Comparator类的定义位置和在sort方法中的使用。
摘要由CSDN通过智能技术生成

突然看到了pta上的题,简单的复习了一下comparator的简单使用

题意答题是这样的:

创建一个Person类,成员为:int age,String name;里面重写起toString()的方法,格式为name-age;

再编写两个Comparator类:

          编写 NameComparator 类,实现对name进行升序排序

          编写 AgeComparator 类,对age进行升序排序

然后下面是测试

输入n

输入n行name age,并创建n个对象放入数组

对数组按照name进行升序排序后输出。

对数组按照age进行升序排序后输出。

大体的意思就是这样,也就是要在不改变主类的情况下,通过Comparator接口来实现定制排序

首先先写这两个Comparator的类,只需要重写其比较方法即可,可以写在测试主类的下方

------注意这两个类一定要在主类外面,当初自己放在里面费了一阵功夫才看出来

class NameComparator implements Comparator<Person>{
	public int compare(Person p1,Person p2) {
		return p1.getName().compareTo(p2.getName());
	}
}
class AgeComparator implements Comparator<Person>{
	publi
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ComparatorJava 提供的一个接口,用于定义两个对象之间的比较规则。可以用于对集合中的元素进行排序或查找等操作。 下面是一个使用 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、付费专栏及课程。

余额充值