集合工具类Collections

java.utils.Collections 是集合工具类,用来对集合进行操作。

部分方法如下:

  • public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。
  • public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。

代码举例:

package demo03;

import java.util.ArrayList;
import java.util.Collections;


public class CollectionsTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        // 一次性往集合中添加多个元素
        Collections.addAll(list, "1", "2", "3", "4", "5", "6", "7");
        System.out.println(list);
        // 打乱集合中元素的顺序
        Collections.shuffle(list);
        System.out.println(list);
    }
}

执行结果:

 

  • public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。

默认规则:就是升序

注意:

  • 被排序的集合里存储的元素,必须实现comparable接口,重写其中的方法compareTo定义排序的规则.

代码举例:

package demo02;

import java.util.Objects;

// 定义测试用对象.要对什么类型排序,泛型就是什么类型
public class Student implements Comparable<Student> {
    private String name;
    private int age;

    // 全参数构造
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 无参数构造
    public Student() {
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


    @Override
    
    public int compareTo(Student o) {
        // 按照年龄 this 在前面 就是按照升序,反之
        return this.getAge() - o.getAge();
    }
}

测试代码

package demo03;

import demo02.Student;

import java.util.ArrayList;
import java.util.Collections;


public class CollectionsTest {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        // 一次性往集合中添加多个元素
        Collections.addAll(list, new Student("张三", 18), new Student("张三", 17), new Student("张三", 15));
        Collections.sort(list);
        System.out.println(list);

    }
}

执行结果:

  • public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排序。

简述Comparable和Comparator两个接口的区别。

Comparable:强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法
被称为它的自然比较方法。只能在类中实现compareTo()一次,不能经常修改类的代码实现自己想要的排序。实现
此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序,对象可以用作有序映射中
的键或有序集合中的元素,无需指定比较器。
Comparator强行对某个对象进行整体排序。可以将Comparator 传递给sort方法(如Collections.sort或
Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用Comparator来控制某些数据结构(如有序set或
有序映射)的顺序,或者为那些没有自然顺序的对象collection提供排序

猜你喜欢

转载自www.cnblogs.com/wurengen/p/10781629.html