概念

Arrays类中的sort方法承诺可以对对象数组进行排序,但要满足下面两个条件之一:

  • 对象所属的类必须实现Comparable接口。
  • 额外传入一个Comparator对象

Comparable

如果这个类是自己写的,实现一个比较接口Comparable就可以使用Arrays工具类了。

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

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

    // 根据名字长度排序
    @Override
    public int compareTo(Person o) {
        return this.name.length() - o.name.length();
    }

    @Override
    public String toString() {
        return this.name + " " + this.age;
    }

    public static void main(String[] args) {
        Person a = new Person("fsr", 18 );
        Person b = new Person("f", 22);
        Person[] p = {a, b};
        Arrays.sort(p);
        System.out.println(Arrays.toString(p));
    }
}

输出:

[f 22, fsr 18]

Comparator

对于不能修改的类,对其进行自定义的排序,需要自己写一个比较符Comparator<T>

// 根据String长度排序
class LengthComparator implements Comparator<String>
{
    @Override
    public int compare(String o1, String o2) {
        return o1.length() - o2.length();
    }
}

public class Test {
    public static void main(String[] args) {
        String[] a = {"sdf", "ddddd", "d"};
        // 传入一个Comparator
        Arrays.sort(a, new LengthComparator());
        System.out.println(Arrays.toString(a));
    }
}

输出

[d, sdf, ddddd]
最后修改:2020 年 11 月 22 日
如果觉得我的文章对你有用,请随意赞赏