数组排序:
1, 数组的元素 是 基本类型, 直接使用 Arrays.sort(arr) 即可 ;
2, 数组的元素 是 引用类型, 则需要让元素 具备可比性;
原理:
数组工具类Arrays 的 sort 方法, 比较元素的大小, 会调用对象的 compareTo方法.
因此, 只需要让 对象实现 Comparable 接口即可.
实现:
/** 人 */ class Person implements Comparable<Person> { // 使对象具备可比性 private int id; // 编号 private String name; // 名称 public Person(int id, String name) { this.id = id; this.name = name; } @Override public int compareTo(Person person) { // 正数: 大; 负数: 小; 0: 等 // 比较 编号 ID int result = this.id - person.id; // 如果 编号相等, 则比较名称的 字典顺序 if (0 == result) { result = this.name.compareTo(person.name); } return result; } @Override public String toString() { return this.id + "-" + this.name; } }
验证:
public class ObjectArraySort { public static void main(String[] args) { Person[] persons = new Person[10]; Random random = new Random(); // 产生 随机数 // 给数组赋值 for (int i = 0; i < persons.length; i++) { int nextInt = random.nextInt(100); // 产生[0, 100]的随机整数 persons[i] = new Person(nextInt, "张" + nextInt); } // 打印原始数组 System.out.println( Arrays.toString(persons) ); // 排序 Arrays.sort(persons); // 打印排序后的数组 System.out.println( Arrays.toString(persons) ); } }