话不多说,直接上代码:
ArrayList:
sort(Comparator<? super Object> c)
@Test
public void test1()
{
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("A",132));
list.add(new Student("B",132));
list.add(new Student("C",123));
list.add(new Student("D",148));
list.add(new Student("E",200));
list.sort(new Comparator<Student>()
{
@Override
public int compare(Student s1,Student s2)
{
return s1.getAge()-s2.getAge();//升序 反之降序
}
});
System.out.println(list);
}
collections:
1.sort(List<T> list)
根据元素的自然顺序 对指定列表按升序进行排序
Student类:
public class Student implements Comparable<Student>{
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Student o) {
return this.age - o.age; // 这个升序排序 o.age-this.age为降序排序
}
}
测试类:
@Test
public void test1()
{
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("A",132));
list.add(new Student("B",132));
list.add(new Student("C",123));
list.add(new Student("D",148));
list.add(new Student("E",200));
Collections.sort(list);
System.out.println(list);
}
结果:
[Student{name='C', age=123}, Student{name='A', age=132}, Student{name='B', age=132}, Student{name='D', age=148}, Student{name='E', age=200}]
总结:
ArrayList 的sort直接匿名内部类进行排序,Collections工具类需要被排序的元素先实现Comparable接口,再进行排序。