comparator 多个条件控制_Comparator接口Comparable接口 排序接口的使用方式

本文介绍了Java中的Comparator接口及其在排序中的作用。Comparator用于自定义排序规则,而Comparable是实现对象的自然排序。当集合包含类类型时,需要自定义Comparator。示例代码展示了如何根据字符串的第一个字符或学生年龄进行排序。Comparator接口提供了灵活的排序策略,适用于多个条件的排序需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Comparator比较器

Comparator接口在java.util包下面,排序是Comparator需要实现的功能之一,该接口代表的是一个比较器,比较器具有可比性,可以做排序的,,本质其实比较两个对象谁排在前边谁排在后面,那么比较的方法是

Comparable:强行对实现它的每个类对象进行整体排序,这种排序我们一般把它称为自然排序,类的CompareTo方法被称为它的自然比较方法.只能在类中实现CompareTo方法一次,不能经常修改类的代码,实现自己想要的排序.实现此接口的对象列表(和数组)可以通过Collections.sort方法(和Arrays.sort())进行自动排序,对象可以用作有序映射中的键或者有序集合中的元素,无需指定比较器.

简单来说就是一些集合或者工具类自身实现了Comparable接口,arrays和collections两个工具类中就拥有了调用排序的方法,内部的sort方法就可以排序,但是一旦集合中放置的是类类型,此时的sort方法就不能使用了,我们需要自定义规则

自定义规则进行排序

代码如下

ArrayList list= new ArrayList<>();

list.add("abc");

list.add("cba");

list.add("bca");

Collections.sort(list,newComparator(){

@Overridepublic intcompare(String o1,String o2){return o2.charAt(0)-01.charAt(0);

}

});

(一般我们都需要在自定的类中实现Comparator接口来重写它的compare方法,当然我们也可以调用Collections工具类中的sort方法的时候new出一个规则对象来临时重写一个如: Collections.sort(list.newComparator(){}),他时可以一种很灵活的自定义的排序接口

类类型中的属性众多我们想要排序怎么办.所以我们可以使用Comparator接口来临时创建出规则

ArrayList list=new ArrayList<>();

list.add(new Student("tom,20"));

list.add(new Student("lily,18"));

Collections.sort(list.newComparator(){

@Overridepublic int compare(Student 01,Student o2){int num= o1.getAge()-o2.getAge();if(num==0){

num=o2.getName().charAt(0)-o1-getName()-charAt(0);

}return num;//负数 0 正数 都代表着交换规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值