在此示例中,我们将学习如何对对象数组进行排序。我们从使用String对象数组开始,如下面的代码片段所示。我们使用Arrays.sort()方法对数组的内容进行排序,并打印排序后的结果。真的很简单。
String names[] = {"Bob", "Mallory", "Alice", "Carol"};
Arrays.sort(names);
System.out.println("Names = " + Arrays.toString(names));接下来,我们将对我们自己的对象的数组进行排序。与对基元数组进行排序相比,这有点不同。第一条规则是我们需要我们的对象来实现Comparable接口。此接口有一个我们需要执行的compareTo()合同,即合同。
该compareTo() 方法的基本规则是,0如果对象值相等,1该对象值较大且-1该对象值较小,则返回。在Person下面的类中,我们仅调用String对象compareTo()方法。有关Person更多详细信息,请参见下面的类。
package org.nhooo.example.util.support;
public class Person implements Comparable {
private String name;
public Person(String name) {
this.name = name;
}
public int compareTo(Object o) {
Person p = (Person) o;
return this.name.compareTo(p.name);
}
public String toString() {
return name;
}
}在下面的代码段中,我们创建了四个Person对象。我们Person使用Arrays.sort()方法根据对象的名称对对象进行排序,并打印出数组值。
Person persons[] = new Person[4];
persons[0] = new Person("Bob");
persons[1] = new Person("Mallory");
persons[2] = new Person("Alice");
persons[3] = new Person("Carol");
Arrays.sort(persons);
System.out.println("Persons = " + Arrays.toString(persons));这是您可以运行上面所有代码段的主要类:
package org.nhooo.example.util;
import org.nhooo.example.util.support.Person;
import java.util.Arrays;
public class ObjectSortExample {
public static void main(String[] args) {
String names[] = {"Bob", "Mallory", "Alice", "Carol"};
Arrays.sort(names);
System.out.println("Names = " + Arrays.toString(names));
Person persons[] = new Person[4];
persons[0] = new Person("Bob");
persons[1] = new Person("Mallory");
persons[2] = new Person("Alice");
persons[3] = new Person("Carol");
Arrays.sort(persons);
System.out.println("Persons = " + Arrays.toString(persons));
}
}此代码段将打印以下输出:
Names = [Alice, Bob, Carol, Mallory] Persons = [Alice, Bob, Carol, Mallory]