1. 程式人生 > 實用技巧 >java集合框架:Collections集合工具類

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

    }
}