Java如何对对象数组进行排序?
在此示例中,我们将学习如何对对象数组进行排序。我们从使用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]