Java - 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) 將集合中元素按照默認規則排序
*      - public static <T> void sort(List<T> list, Comparator<? super T>):將集合中元素按照指定規則排序

實例:

import java.lang.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //往集合中添加多個元素
        /*
            list.add("a");
            list.add("b");
            list.add("c");
            list.add("d");
            list.add("e");
            System.out.println(list);
        */
        //public static <T> boolean addAll(Collection<T> c, T...elements):往集合中添加一些元素
        Collections.addAll(list, "a", "b", "c", "d", "e");
        //public static void shuffle(List<?> list) 打亂順序:打亂集合順序
        Collections.shuffle(list);
        System.out.println(list);
    }
}
方法:
*      - public static <T> void sort(List<T> list) 將集合中元素按照默認規則排序
注意:
*           sort(List<T> List)使用前提
*           被排序的集合裏邊存儲的元素,必須實現Comparable,重寫接口中的方法compareTo定義排序的規則
*   Comparable接口的排序規則:
*       自己(this) - 參數 //升序
*       參數 - 自己(this) //降序

 

實例:

import java.lang.*;
import java.util.*;
/*
* - java.utils.Collections是集合工具類,用來對集合進行操作。部分方法如下:
*      - public static <T> boolean addAll(Collection<T> c, T...elements):往集合中添加一些元素//public static <T> boolean addAll(Collection<T> c, T...elements):往集合中添加一些元素
*      - public static void shuffle(List<?> list) 打亂順序:打亂集合順序
*      - public static <T> void sort(List<T> list) 將集合中元素按照默認規則排序
*      - public static <T> void sort(List<T> list, Comparator<? super T>):將集合中元素按照指定規則排序
*      注意:
*           sort(List<T> List)使用前提
*           被排序的集合裏邊存儲的元素,必須實現Comparable,重寫接口中的方法compareTo定義排序的規則
*   Comparable接口的排序規則:
*       自己(this) - 參數 //升序
*       參數 - 自己(this) //降序
* */
public class Main {

    public static void main(String[] args) {
        ArrayList<Integer> list01 = new ArrayList<>();
        list01.add(1);
        list01.add(3);
        list01.add(2);
        System.out.println(list01);//[1, 3, 2]
        //public static <T> void sort(List<T> list) 將集合中元素按照默認規則排序
        Collections.sort(list01);
        System.out.println(list01);//[1, 2, 3]

        ArrayList<String> list02 = new ArrayList<>();
        list02.add("a");
        list02.add("c");
        list02.add("b");
        System.out.println(list02);//[a, c, b]
        Collections.sort(list02);
        System.out.println(list02);//[a, b, c]

        ArrayList<Person> list03 = new ArrayList<>();
        list03.add(new Person("張三", 18));
        list03.add(new Person("李四", 20));
        list03.add(new Person("王五", 15));
        System.out.println(list03);
        Collections.sort(list03);
        System.out.println(list03);
    }
}


//Person 類
import java.util.Objects;

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

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

    }
    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 hashCode() {
        return Objects.hash(name, age);
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    //重寫排序的規則
    @Override
    public int compareTo(Person o){
        //return 0;認爲元素都是相同的
        //自定義比較的規則,比較兩個人的年齡(this, 參數Person)
        return this.getAge() - o.getAge();//升序排序
    }
}

 

方法: public static <T> void sort(List<T> list, Comparator<? super T>):將集合中元素按照指定規則排序
* Comparator 和 Comparable 的區別
*       Comparable:自己(this)和別人(參數)比較,自己需要實現Comparable接口,重寫比較的規則compareTo方法
*       Comparator:相當於找一個第三方的裁判,比較兩個

實例: 

import java.lang.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        ArrayList<Integer> list01 = new ArrayList<>();
        list01.add(1);
        list01.add(3);
        list01.add(2);
        System.out.println(list01);//[1, 3, 2]
        Collections.sort(list01, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;//升序
                //return o2 - o1;//降序
            }
        });
        System.out.println(list01);//[1, 2, 3]

        ArrayList<Person> list02 = new ArrayList<>();
        list02.add(new Person("迪麗熱巴", 18));
        list02.add(new Person("古力娜扎", 20));
        list02.add(new Person("馬兒扎哈", 17));
        list02.add(new Person("迪麗熱巴", 17));
        System.out.println(list02);
        Collections.sort(list02, new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                //return o1.getAge() - o2.getAge();
                if(o1.getAge() == o2.getAge())
                    return o1.getName().charAt(0) - o2.getName().charAt(0);
                else return o1.getAge() - o2.getAge();
            }
        });
        System.out.println(list02);
    }
}

 

發佈了424 篇原創文章 · 獲贊 102 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章