数组排序:
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) );
}
}