概念
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]