List intList = new ArrayList<>();
intList.add(54);
intList.add(7674);
intList.add(636);
intList.add(4325);
intList.add(21);
intList.add(432143);
Collections.sort(intList);
for (Integer i : intList) {
System.out.print(i + " ");
}
结果是21 54 636 4325 7674 432143
Collections类提供了对集合操作的一些方法,注意是Collections而不是Collection,后者是集合的顶级接口。
使用Collerctions类的sort()方法实现升序排序,相反的,方法reverse()则实现降序排序。
Student类就不写了,共三个属性,配上get,set就行。
List students = new ArrayList<>();
students.add(new Student("狗蛋",90,180));
students.add(new Student("黑子",80,165));
students.add(new Student("旺财",91,170));
students.add(new Student("翠花",80,182));
students.add(new Student("铁牛",75,180));
students.add(new Student("大根",82,172));
students.add(new Student("傻蛋",90,168));
students.add(new Student("富贵",80,178));
System.out.println("原始数据:");
for (Student s : students) {
System.out.println(s.getName() + " " + s.getScore() + " " + s.getHeight());
}
System.out.println("按照分数升序排序:");
students.sort(Comparator.comparing(Student::getScore));
for (Student s : students) {
System.out.println(s.getName() + " " + s.getScore() + " " + s.getHeight());
}
抄个Comparator的介绍放这里:
强行对某个对象 collection 进行整体排序的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。当且仅当对于一组元素 S 中的每个e1和e2 而言,c.compare(e1, e2)==0与 e1.equals(e2) 具有相等的布尔值时,Comparator c 强行对 S 进行的排序才叫做与 equals 一致的排序。
关键字"::"来自Java8,可以通过 `::` 关键字来访问类的构造方法,对象方法,静态方法。
如果要对多个属性进行排序,继续向后添加排序规则即可。
// 先按照score的升序,然后按照height的升序
students.sort(Comparator.comparing((Student::getScore)).thenComparing(Student::getHeight).reversed());
// 先按照score的升序,然后按照height的降序
students.sort(Comparator.comparing((Student::getScore)).thenComparing(Student::getHeight).reversed().reversed());
// 先按照score的降序,然后按照height的降序
students.sort(Comparator.comparing((Student::getScore)).reversed().thenComparing(Student::getHeight).reversed().reversed());