Java -- Collections 类
概述
Collections 类是 Java 提供的一个操作 Collection、Map 集合的工具类,该类提供了许多操作集合的静态方法。
Collections 常用方法
static <T extends Comparable<? super T>> void sort(List<T> list) 利用自然排序法对指定列表进行升序排列
static <T> void sort(List<T> list, Comparator<? super T> c) 利用定制排序对指定序列进行升序排列
static void reverse(List<?> list) 反转指定列表中元素的顺序
static void shuffle(List<?> list) 对指定列表进行随机排序
代码示例
定义 Student 类和 Staff 类,其中 Student 类实现 Comparable 接口:
public class Student implements Comparable<Student> {
private int age;
private String name;
public Student() {}
public Student(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
@Override
public int compareTo(Student anotherStudent) {
return this.age == anotherStudent.age ? this.name.compareTo(anotherStudent.name) : (this.age - anotherStudent.age);
}
}
public class Staff {
private int age;
private String name;
public Staff() {}
public Staff(int age, String name) {
this.age = age;
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Staff{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}
定义测试类:
public class SortListDemo {
public static void main(String[] args) {
List<Student> stuList = new ArrayList<>();
stuList.add(new Student(24, "Aloys"));
stuList.add(new Student(24, "Zoey"));
stuList.add(new Student(23, "Diana"));
stuList.add(new Student(30, "Alfred"));
System.out.println("原序:" + stuList);
// static <T> void sort(List<T> list, Comparator<? super T> c)
Collections.sort(stuList);
System.out.println("升序:" + stuList);
// static void reverse(List<?> list)
Collections.reverse(stuList);
System.out.println("反转:" + stuList);
// static void shuffle(List<?> list)
Collections.shuffle(stuList);
System.out.println("随机:" + stuList);
List<Staff> staList = new ArrayList<>();
staList.add(new Staff(30, "David"));
staList.add(new Staff(31, "Rick"));
staList.add(new Staff(30, "Carl"));
System.out.println("-------------------------------------------------------------");
System.out.println("原序:" + staList);
// static <T> void sort(List<T> list, Comparator<? super T> c)
Collections.sort(staList, new Comparator<Staff>() {
@Override
public int compare(Staff o1, Staff o2) {
return o1.getAge() == o2.getAge() ? o1.getName().compareTo(o2.getName()) : (o1.getAge() - o2.getAge());
}
});
System.out.println("升序:" + staList);
}
}
运行结果:
原序:[Student{age=24, name='Aloys'}, Student{age=24, name='Zoey'}, Student{age=23, name='Diana'}, Student{age=30, name='Alfred'}]
升序:[Student{age=23, name='Diana'}, Student{age=24, name='Aloys'}, Student{age=24, name='Zoey'}, Student{age=30, name='Alfred'}]
反转:[Student{age=30, name='Alfred'}, Student{age=24, name='Zoey'}, Student{age=24, name='Aloys'}, Student{age=23, name='Diana'}]
随机:[Student{age=23, name='Diana'}, Student{age=24, name='Zoey'}, Student{age=30, name='Alfred'}, Student{age=24, name='Aloys'}]
原序:[Staff{age=30, name='David'}, Staff{age=31, name='Rick'}, Staff{age=30, name='Carl'}]
升序:[Staff{age=30, name='Carl'}, Staff{age=30, name='David'}, Staff{age=31, name='Rick'}]