List集合的排序
1.对基本类型的包装类型进行排序
@Test
public void test01() {
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(2);
list.add(1);
list.add(4);
System.out.println("排序前:"+list);
Collections.sort(list);
System.out.println("排序后:"+list);
}
运行结果如下:
排序前:[3, 2, 1, 4]
排序后:[1, 2, 3, 4]
2.对自定义对象的排序
@Test
public void test02() {
List<User> list = new ArrayList<>();
list.add(new User(1, "aaa", 19));
list.add(new User(4, "c", 12));
list.add(new User(2, "bbbb", 17));
list.add(new User(3, "dd", 22));
for (User user : list) {
System.out.println(user);
}
System.out.println("============================");
Collections.sort(list);
for (User user : list) {
System.out.println(user);
}
System.out.println("============================");
Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
int num = o1.getName().compareTo(o2.getName());
return num == 0 ? o1.getAge() - o2.getAge() : num;
}
});
for (User user : list) {
System.out.println(user);
}
}
}
运行结果
User [id=1, name=aaa, age=19]
User [id=4, name=c, age=12]
User [id=2, name=bbbb, age=17]
User [id=3, name=dd, age=22]
============================
User [id=4, name=c, age=12]
User [id=2, name=bbbb, age=17]
User [id=1, name=aaa, age=19]
User [id=3, name=dd, age=22]
============================
User [id=1, name=aaa, age=19]
User [id=2, name=bbbb, age=17]
User [id=4, name=c, age=12]
User [id=3, name=dd, age=22]
结论:对自定义对象进行排序的时候自定义对象需要实现Comparable接口并重写compareTo方法。或者使用Collections.sort(list, new Comparator())方法进行自定义排序。