Java—集合排序

本文详细介绍了Java中集合排序的两种方式:Comparable接口和Comparator接口。Comparable是对象内部实现的排序,适用于已经支持自然比较的类,如String和Integer。Comparator则在集合外部实现排序,用于自定义比较规则。文章通过实例展示了如何在自定义类中使用这两个接口进行排序,以及在TreeSet中如何使用Comparator来避免实现Comparable接口。
摘要由CSDN通过智能技术生成

Java——集合的排序

<一>接口comparable与接口comparator的比较

1> Comparable

Comparable是在集合内部定义方法实现的排序,位于java.lang包下。是一个对象本身就已经支持自然比较所需要实现的接口。例如String,Interger自己就实现了Comparable接口,并且重写了compareTo方法,可以完成比较大小操作。自定义类要在加入list容器后能够排序,也可以实现Comparable接口,在使用Collections类的sort方法排序时若不指定Comparator,那就以自然顺序排序。所谓自然顺序就是实现Comparable接口设定的排序方式

2> Comparator

Comparator是在集合外部实现的排序,位于java.util包下。是一个专用的比较器,当这个对象不支持自比较或者自比较函数(compareTo())不能满足要求时,可以写一个比较器来完成两个对象之间大小的比较。使用时大多是先构造一个比较器,再通过调用某些sort()方法作参数传入之后进行排序

<二>接口comparable与接口comparator的使用

1> Comparable

  • List:由于一些包装类型(如String,Interger)已经实现了Comparable接口,并且重写了comepareTo()方法,所以写出如下代码
public class Test {
   
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("bbb");
        list.add("cba");
        list.add("acd");
        list.add("zhang");
        list.add("shi");
        list.sort(null);
        System.out.println(list);
    }
}

image.png

这里显示运行结果是排好序的。我们可以注意到list.sort()方法里写的是null,这里其实是需要一个自己构造的比较器,但是这里传入null,说明没有比较器,以自然顺序(String类内的compareTo方法)进行排序
  • 我么们也可以这么排序:
Collections.sort(list);

结果是一样的,下面我们来实现一个自定义类

class Person implements Comparable<Person>{
   
    private int age;
    private String name;

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值