java集合框架:Collections集合工具类

Collections集合工具类

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

  • public static <T> boolean addAll(Collection<T> c,T...elements):往集合中添加一些元素

  • public static void shuffle(List<?> list):打乱顺序

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

    • 被排序的集合里边存储的元素,必须实现Comparable接口,重写接口中的compareTo()方法定义排序的规则
    • 规则: this-参数(升序) 参数-this(降序)
  • public static <T> void sort( List<T> list,Comparator<? super T>):将集合中的元素按照指定规则排序。

    Comparable 和 Comparator的区别:

    • Comparable:自己(this)和别人(参数)的比较,自己需要实现Comparable接口,重写比较的规则compareTo()方法方法;
    • Comparator:找一个第三方裁判,比较两个。
public class Person implements Comparable<Person> {
    private String name;
    private int age;

    @Override
    public int compareTo(Person o) {
        //return 0; 认为元素都是相同的
        //自定义规则:按照年龄排序
        return this.getAge()-o.getAge();//升序
        //return o.getAge()-this.getAge();//降序
        //此处可以自定义规则
    }
}

public class Demo01 {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        Collections.addAll(list,"a","c","e","d");
        System.out.println(list);//[a, b, c, d]
        Collections.shuffle(list);//打乱顺序
        System.out.println(list);//[b, d, a, c] 每次都不一样
        Collections.sort(list);//参数只能传List集合不能Set集合
        System.out.println(list);//[a, b, c, d]

        ArrayList<Person> list1=new ArrayList<>();
        Collections.addAll(list1,new Person("zhangsan",19),new Person("lisi",18),new Person("wanger",21));
        System.out.println(list1);
        //[Person{name='zhangsan', age=19}, Person{name='lisi', age=18}, Person{name='wanger', age=21}]
        Collections.sort(list1);
        System.out.println(list1);
        //[Person{name='lisi', age=18}, Person{name='zhangsan', age=19}, Person{name='wanger', age=21}]

        Collections.sort(list1, new Comparator<Person>() {
            //重写比较规则
            @Override
            public int compare(Person o1, Person o2) {
                return o2.getAge()-o1.getAge();//降序
                //此处可以自定义规则
            }
        });
        System.out.println(list1);//[Person{name='wanger', age=21}, Person{name='zhangsan', age=19}, Person{name='lisi', age=18}]

    }
}

上一篇:Java泛型、集合框架List接口、迭代器Iterator和Collections工具类的综合实战训练


下一篇:用了这么多年的泛型,你对它到底有多了解?