Loading... # 概念 Arrays类中的sort方法承诺可以对对象数组进行排序,但要满足下面两个条件之一: * 对象所属的类必须实现Comparable<T>接口。 * 额外传入一个Comparator<T>对象 ---------- # Comparable<T> 如果这个类是自己写的,实现一个比较接口`Comparable`就可以使用Arrays工具类了。 ```java 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<T> 对于不能修改的类,对其进行自定义的排序,需要自己写一个比较符`Comparator<T>`。 ```java // 根据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 日 08 : 14 PM © 允许规范转载