前言
Java 中所有数字类型的基本类都可以使用 Arrays.sort 方法进行排序,有时候对于自定义类,我们也会有排序的需求,本文就此举一个简单的例子。
例子场景——根据年龄升序排序
假设我们有一组自定义对象,然后需要对此按照年龄从小到大进行排序,我们只需要这个自定义对象实现 Comparable 接口并覆盖重写 compareTo 方法即可。
自定义对象代码
package del;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class User implements Comparable<User>{
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
@Override
public String toString() {
return name+"的年龄是"+age;
}
public void setName(String name) {
this.name = name;
}
@Override
public int compareTo(User o) {
if(o == null){
return -1;
}
//升序
return this.getAge()>o.getAge()?1:-1;
}
}
测试
public static void main(String [] args){
testCollectionsSort();
testArraysSort();
}
private static void testCollectionsSort(){
User u1 = new User();
u1.setAge(10);
u1.setName("Jecket1");
User u2 = new User();
u2.setAge(5);
u2.setName("Jecket2");
User u3 = new User();
u3.setAge(1);
u3.setName("Jecket3");
List list = new ArrayList();
list.add(u1);
list.add(u2);
list.add(u3);
System.out.println(list.toString());
Collections.sort(list);
System.out.println(list.toString());
}
private static void testArraysSort(){
User u1 = new User();
u1.setAge(10);
u1.setName("Jecket1");
User u2 = new User();
u2.setAge(5);
u2.setName("Jecket2");
User u3 = new User();
u3.setAge(1);
u3.setName("Jecket3");
User[] array = new User[3];
array[0] = u1;
array[1] = u2;
array[2] = u3;
System.out.println(Arrays.toString(array));
Arrays.sort(array);
System.out.println(Arrays.toString(array));
}
测试结果
[Jecket1的年龄是10, Jecket2的年龄是5, Jecket3的年龄是1]
[Jecket3的年龄是1, Jecket2的年龄是5, Jecket1的年龄是10]
[Jecket1的年龄是10, Jecket2的年龄是5, Jecket3的年龄是1]
[Jecket3的年龄是1, Jecket2的年龄是5, Jecket1的年龄是10]
参考资料
[1]、《Effective Java 第2版》