Java——Collections工具类

一、介绍

java.util.Collections是集合的工具类,里面提供了静态方法来操作集合、乱序、排序...

二、shuffle

public static void shuffle(List<?> list)

使用默认随机源对指定列表进行置换

  • 乱序只能对List集合进行乱
  • 集合中元素类型可以任意类型

例子

LinkedList<Integer> list = new LinkedList<>();
list.add(100);
list.add(200);
list.add(300);
System.out.println(list);   // [100, 200, 300]
Collections.shuffle(list);
System.out.println(list);   // [200, 300, 100]

三、sort

sort方法是一个重载的方法,可以实现自然排序及自定义比较器排序。要特别注意的是sort方法只能对List集合进行排序

3.1、sort的自然排序

public static <T extends Comparable<? super T>> void sort (List<T> list)

例子

LinkedList<Integer> list = new LinkedList<>();
list.add(200);
list.add(100);
list.add(300);
System.out.println(list);   // [200, 100, 300]
Collections.sort(list);
System.out.println(list);   // [100, 200, 300]

3.2、自定义比较器排序

public static <T> void sort (List<T> list, Comparator<? super T> c)

方法分析

  • 该方法只能对List集合进行排序
  • 从方法中泛型分析可知,集合中元素类型必须是Comparable的子类型

例子

List<Student> list = new LinkedList<>();
list.add(new Student("张三", 26));
list.add(new Student("李四", 23));
list.add(new Student("张三", 22));
list.add(new Student("王五", 26));

for (Student student : list) {
    System.out.println(student);
    // Student{name='张三', age=26}
    //Student{name='李四', age=23}
    //Student{name='张三', age=22}
    //Student{name='王五', age=26}
}

Collections.sort(list, new Comparator<Student>() {
    @Override
    public int compare(Student o1, Student o2) {
        if(o1.getAge() == o2.getAge()){
            return o1.getName().compareTo(o2.getName());
        }else{
            return o1.getAge() - o2.getAge();
        }
    }
});

for (Student student : list) {
    System.out.println(student);
    //Student{name='张三', age=22}
    //Student{name='李四', age=23}
    //Student{name='张三', age=26}
    //Student{name='王五', age=26}
}

四、addAll

该方法功能添加任意多个数据到集合中

static <T> boolean addAll(Collection<? super T> c, T... elements)

addAll是一个含有可变参数的方法,使用时可以传入任意多个实参,实用方便。

例子

List<Integer> list = new LinkedList<>();
Collections.addAll(list, 100, 200, 300);
System.out.println(list);   // [100, 200, 300]

  

原文地址:https://www.cnblogs.com/xulinjun/p/14777149.html