java.util.Collections类: 操作集合的工具类
特点: 1.构造方法private修饰 2.所有成员static修饰
常用方法:
public static void shuffle(List<?> list): 打乱List集合中元素的顺序
public static <T> void sort(List<T> list): 将集合中元素按照默认规则排序。
参数: List list: 接口,传递实现类ArrayList/LinkedList对象
注意: 对于数字而言,默认从小到大的顺序排列
对于字符串默认按照第一个不相同的字母的ASCII码值从小到大的顺序排列
List<String> list2 = new ArrayList<>();
List<Integer> list = new ArrayList<>();
自定义排序Comparator接口,作用是用来指定排序规则的,必须传递该接口的实现类对象 ,
(可以单独定义接口实现类,可以直接传递匿名内部类对象)
public class Demo02Collections {
public static void main(String[] args) {
Collections.sort(list, new Comparator<Integer>()匿名内部类对象 {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println("排序前: "+list2);
Collections.sort(list2, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.length() - o1.length();
}
});
}
}
public class Student {
private String name;
private int age;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class CompAge implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
}
public class Demo03Collections {
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
list.add(new Student("zs",18));
list.add(new Student("ls",38));
list.add(new Student("ww",28));
System.out.println("年龄升序排序前: "+list);
Collections.sort(list,new CompAge());
System.out.println("年龄升序排序后: "+list);
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o2.getAge() - o1.getAge();
}
});
System.out.println("年龄降序排序后: "+list);
}
}