实现comparable接口给对象数组进行排序(后用Comparator)

一.首先我们建立一个student类,在里面实现重写方法,和构造方法

在这里插入图片描述

二.然后我们实现一个可以比较的接口Comparable,重写这个接口中的compare to方法,并且在这个方法内实现比较方法,这里是按照年龄来进行比较的比较方法.

在这里插入图片描述

三.最后来创建一个对象数组,并且来进行排序,最后在将其打印出来

在这里插入图片描述
最后来看一下运行的效果图:
在这里插入图片描述
显然是按照年龄来进行排序的.

附:那么我们如何对名字来进行排序呢?

只需要将比较方法来换成:在这里插入图片描述
因为name是String类型,String类型中已经实现了comparable接口,可以直接使用.
运行效果图:显然效果是达到了.
在这里插入图片描述

思考:如果我们要按照一种规则来进行排序时,就必须来改变compare to中的比较方法,这显然是有些麻烦的这时我们可以使用比较器来进行排序.

一.如何实现一个比较器

就是创建一个类实现Comparator接口,并且重写这个接口中的compare()方法,在这个方法中写上比较的方法.
在这里插入图片描述

二.原先的步骤与以往相同,就是在使用sort()方法时,先创建一个AgeComparator的引用ageComparator,并且将其作为sort()方法的第二个参数传进去.(这时候就按照age的顺序来进行排序了)

在这里插入图片描述
运行结果图:(是不是按照年龄的顺序来进行排序了🤓)
在这里插入图片描述
在这里插入图片描述
🐾…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,对象数组可以使用`Arrays.sort()`方法进行排序。`Arrays.sort()`方法有多种重载形式,可以根据不同的比较器进行排序,例如: ```java public static <T> void sort(T[] a, Comparator<? super T> c) ``` 其中,`a`参数是待排序对象数组,`c`参数是比较器,用于指定排序的规则。 比较器是一个接口,通常使用Java 8中的lambda表达式来实现。比较器应该返回一个整数值,表示两个对象的大小关系。如果返回值小于0,则表示第一个对象小于第二个对象;如果返回值等于0,则表示两个对象相等;如果返回值大于0,则表示第一个对象大于第二个对象。 下面是一个示例,演示如何使用`Arrays.sort()`方法对象数组进行排序: ```java class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } public class ObjectArraySortDemo { public static void main(String[] args) { Person[] persons = { new Person("Alice", 25), new Person("Bob", 30), new Person("Charlie", 20) }; // 按年龄升序排序 Arrays.sort(persons, Comparator.comparingInt(person -> person.age)); // 输出排序后的结果 System.out.println(Arrays.toString(persons)); } } ``` 输出结果为: ``` [Person{name='Charlie', age=20}, Person{name='Alice', age=25}, Person{name='Bob', age=30}] ``` 在上面的示例中,我们创建了一个`Person`类,并创建了一个包含三个`Person`对象的数组。然后我们使用`Arrays.sort()`方法数组进行排序排序的依据是`Person`对象的`age`属性,使用了`Comparator.comparingInt()`方法来指定按照`age`属性进行排序。最后,我们输出排序后的结果。 除了上面的示例中使用的`Comparator.comparingInt()`方法,还有其他的比较器可以使用,例如: - `Comparator.comparing()`:使用对象的某个属性进行排序; - `Comparator.reverseOrder()`:逆序排列; - `Comparator.naturalOrder()`:自然排序,用于实现`Comparable`接口的类; - 自定义比较器,实现`Comparator`接口的`compare()`方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值