@Test
public void test4(){
List<Integer> list = new ArrayList<Integer>();
for (int i = 10 ; i >= 1 ; i --){
list.add(i);
}
System.out.println(list);
Collections.sort(list);
System.out.println(list);
}
定义一个泛型为Ineger的 集合, 对集合内的数据进行排序, 当程序运行到第一个输出语句中的list时,可以看到 list再进行排序前是降序的
进行排序后,集合内的排序发生改变, 从降序变为升序.
2 对bean类型排序
我们创建一个测试student 对象, 对象中有三个属性,如下
@Data
public class Student {
private Integer id ;
private String name ;
private Integer age ;
}
编写一个测试类
@Test
public void test5(){
List<Student> list = new ArrayList<Student>();
String[] s = {"a","b","c","d","e","f","g","h","i","j"};
for (int i = 1 ; i<= 10 ; i ++){
Student student = new Student();
student.setId(i);
student.setAge(10-i+1);
student.setName(s[i-1]);
list.add(student);
}
Collections.sort(list<Student>);
System.out.println(list);
}
这个时候 sort方法会报错, 原因是sort方法进行排序的前提条件是 该集合类型需要实现Comparable 接口, 而我们的student类并没有实现其接口, 所以会报错. 这个时候我们调用sort的第二种方法
public void test5(){
List<Student> list = new ArrayList<Student>();
String[] s = {"a","b","c","d","e","f","g","h","i","j"};
for (int i = 1 ; i<= 10 ; i ++){
Student student = new Student();
student.setId(i);
student.setAge(10-i+1);
student.setName(s[i-1]);
list.add(student);
}
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o2.getId() - o1.getId();
}
});
System.out.println(list);
}
在方法中创建Comparator实例并且重写其compare方法