36-7

42 阅读2分钟
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) {
         
        //1.对于int数字,想按照从大到小的顺序排列?
        //第一个参数是要排序的List集合对象
        //第二个参数是Comparator接口实现类对象,用于指定排序规则: 匿名内部类对象
        Collections.sort(list, new Comparator<Integer>()匿名内部类对象 {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        }); 
        System.out.println("排序前: "+list2);
        //按照字符串的长度从大到小的顺序排列?
        //第一个参数是要排序的List集合对象
        //第二个参数是Comparator接口实现类对象,用于指定排序规则: 匿名内部类对象
        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 +
                '}';
    }
	//生产空参/满参,set/get方法
}
//Comparator接口实现类指定排序规则(按照年龄升序)
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);

        //调用sort方法,按照年龄从小到大的顺序
        //第一个参数: List集合对象
        //第二个参数: Comparator接口的实现类对象
        //单独定义Comparator接口的实现类
        Collections.sort(list,new CompAge());

        System.out.println("年龄升序排序后: "+list);


        //调用sort方法,按照年龄从大到小的顺序
        //第一个参数: List集合对象
        //第二个参数: Comparator接口的匿名内部类对象
        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //按照年龄从大到小的顺序
                return o2.getAge() - o1.getAge();
            }

        });
        System.out.println("年龄降序排序后: "+list);
    }
}