Collection工具类

java. utils.Collections是集合工具类,用来对集合进行操作。
部分方法如下:

  • public static boolean addAll(Collection C,T… elements):往集合中添加一-些元素。
  • public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。
package cn.itcast.day11.demo08;

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

public class CollectionsMain {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        ArrayList list1 = new ArrayList();
        list.add("周冬雨");
        list.add("刘亦菲");
        list.add("杨超越");
        list.add("詹青云");
        System.out.println(list);
        System.out.println("=============");

        Collections.addAll(list1,"周冬雨","刘亦菲","杨超越","詹青云");
        System.out.println(list1);

        Collections.shuffle(list1);
        System.out.println(list1);

    }

}

执行结果

[周冬雨, 刘亦菲, 杨超越, 詹青云]
=============
[周冬雨, 刘亦菲, 杨超越, 詹青云]
[杨超越, 刘亦菲, 詹青云, 周冬雨]
  • public static void sort(List list):将集合中元素按照默认规则排序。
package cn.itcast.day11.demo08;

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

public class CollectionsSort {
    public static void main(String[] args) {
        ArrayList<Integer> list01 = new ArrayList<>();
        list01.add(21);
        list01.add(43);
        list01.add(82);
        list01.add(23);
        System.out.println(list01);
        Collections.sort(list01);
        System.out.println(list01);//默认升序


        ArrayList<String> list02 = new ArrayList<>();
        list02.add("a");
        list02.add("w");
        list02.add("kk");
        System.out.println(list02);
        Collections.sort(list02);
        System.out.println(list02);
    }
}

执行结果

[21, 43, 82, 23]
[21, 23, 43, 82]
[a, w, kk]
[a, kk, w]

自定义类Collections用法
注意:
sort(List list)使用前提: 被排序的集合里边存储的元素,必须实现Comparable,重写接口中的方法compare To定义排序的规则
自定义类

package cn.itcast.day11.demo08;

public class Person implements Comparable<Person>{
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "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(Person o) {
        //return 0;//认为元素都是相同的
        //自定义比较的规则,比较两个人的年龄(this,参数Person)
        return this.getAge() - o.getAge();//年龄升序排序
    }
}

主函数

package cn.itcast.day11.demo08;

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

public class CollectionsPerson {
    public static void main(String[] args) {
        ArrayList<Person> list = new ArrayList<>();
        list.add(new Person("周冬雨",20));
        list.add(new Person("刘亦菲",22));
        list.add(new Person("杨超越",21));
        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);

    }
}

执行结果

[Person{name='周冬雨', age=20}, Person{name='刘亦菲', age=22}, Person{name='杨超越', age=21}]
[Person{name='周冬雨', age=20}, Person{name='杨超越', age=21}, Person{name='刘亦菲', age=22}]
  • public static void sort(List list, Comparator<? super T> ) :将集合中元素按照指定规则排序。

ComparatorComparable的区别

  • Comparable:自己(this )和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法
  • Comparator :相当于找一个第三方的裁判,比较两个
package cn.itcast.day11.demo08;

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

public class CollectionsCompare {
    public static void main(String[] args) {
        ArrayList<Integer> list01 = new ArrayList<>();
        list01.add(19);
        list01.add(2);
        list01.add(99);
        System.out.println(list01);

        Collections.sort(list01,new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;//升序
                //return o2 - o1;//降序
            }
        });

        System.out.println(list01);
    }
}

执行结果

[19, 2, 99]
[2, 19, 99]

自定义类排序

package cn.itcast.day11.demo08;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @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;
    }
}
package cn.itcast.day11.demo08;

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


public class CollectionStudent {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        list.add(new Student("周冬雨",16));
        list.add(new Student("刘亦菲",16));
        list.add(new Student("周冬雨",17));
        list.add(new Student("杨幂",10));
        System.out.println(list);

        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //按照年龄升序排序
                return o1.getAge() - o2.getAge();
            }
        });
        System.out.println(list);

    }
}

执行结果

[Student{name='周冬雨', age=16}, Student{name='刘亦菲', age=16}, Student{name='周冬雨', age=17}, Student{name='杨幂', age=10}]
[Student{name='杨幂', age=10}, Student{name='周冬雨', age=16}, Student{name='刘亦菲', age=16}, Student{name='周冬雨', age=17}]

猜你喜欢

转载自blog.csdn.net/qq_42832437/article/details/106522654