欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Collection工具类

程序员文章站 2024-01-14 08:08:16
...

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}]