1. 程式人生 > 實用技巧 >Java中的Collections類(工具類)十二大常用方法總結

Java中的Collections類(工具類)十二大常用方法總結

Collections類

Collections類是Java中針對集合類的一個工具類,其中提供一系列靜態方法。

1. sort(Comparator<? super E>):void List

對集合中的元素排序:

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(2);
        list.add(5);
        list.add(
3); list.add(4); list.add(1); Collections.sort(list); System.out.println(list); } } Output: [1, 2, 3, 4, 5]

2.reverse(List<?>):void

反轉集合中的元素:

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        
for(int i = 0;i< 5; i++){ list.add(i+1); } System.out.println(list); Collections.reverse(list); System.out.println(list); } } Output: [1, 2, 3, 4, 5] [5, 4, 3, 2, 1]

3.shuffle(List<?>):void

打亂元素中的元素:

public class Main {
    public static void
main(String[] args) { List<Integer> list = new ArrayList<Integer>(); for(int i = 0;i< 5; i++){ list.add(i+1); } Collections.shuffle(list); System.out.println(list); } } Output:(每次都不同) eg:[4, 2, 1, 3, 5]

4.fill(List<? super T>,T):void

用T元素替換掉集合中的所有的元素:

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        for(int i = 0;i< 5; i++){
            list.add(i+1);
        }
        System.out.println(list);
        Collections.fill(list,6);
        System.out.println(list);
    }
}
Output:
[1, 2, 3, 4, 5]
[6, 6, 6, 6, 6]

5.copy(List<? super T>,List<? extend T>):void

複製並覆蓋相應索引的元素:

public class Main {
    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<Integer>();
        for(int i = 0;i< 5; i++){
            list1.add(i+1);
        }
        List<Integer> list2 = new ArrayList<Integer>();
        for(int i = 0;i<5;i++){
            list2.add(i+6);
        }
        System.out.println(list1);
        Collections.copy(list1,list2);
        System.out.println(list1);
    }
}
Output:
[1, 2, 3, 4, 5]
[6, 7, 8, 9, 10]

6.min/max(Collection<? extends T>):T

找到集合中最大/小的元素:

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        for(int i = 0;i< 10; i++){
            list.add(i+1);
        }
        System.out.println(Collections.max(list));
        System.out.println(Collections.min(list));
    }
}
Output:
10
1

7.swap(List<?>,int,int):void

交換集合中指定元素索引的位置:

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        for(int i = 0;i< 10; i++){
            list.add(i+1);
        }
        Collections.swap(list,3,4);
        System.out.println(list);
    }
}
Output:
[1, 2, 3, 5, 4, 6, 7, 8, 9, 10]

8.rotate(List<?>,int):void

集合中的元素向後移m個位置,在後面被遮蓋的元素迴圈到前面來.

(負數向左移動,正數向右移動)

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        for(int i = 0;i< 5; i++){
            list.add(i+1);
        }
        Collections.rotate(list,2);
        System.out.println(list);
        Collections.rotate(list,-2);
        System.out.println(list);
    }
}
Output:
[4, 5, 1, 2, 3]
[1, 2, 3, 4, 5]

9.indexOfSubList(List<?>,List<?>):int / lastIndexOfSubList(List<?>,List<?>):int

找出引數2在引數1第一次出現的位置:

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3,3,3,4,5));
        List<Integer> subList = new ArrayList<Integer>();
        subList.add(3);
        System.out.println(Collections.indexOfSubList(list,subList));
        System.out.println(Collections.lastIndexOfSubList(list,subList));
    }
}
Output:
2
4

10.replaceAll(List,T,T):boolean

替換成指定的元素:

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6));
        System.out.println(Collections.replaceAll(list,3,36));
        System.out.println(list);
    }
}
Output:
true
[1, 2, 36, 4, 5, 6]

11.synchronizedXxx方法

可以將某集合轉化成執行緒安全的容器之後再使用:

public class Main {
    public static void main(String[] args) {
        List<String> slist = Collections.synchronizedList(new ArrayList<String>());
        ...
    }
}

12.unmodifiableCollection(Collection<? extends T>):Collection

將集合變為不可修改:

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(10);
        Collection<Integer> clist = Collections.unmodifiableCollection(list);
        try{
            clist.add(10);
        }catch (Exception e){
            System.out.println("Exception");
        }
    }
}
Output:
Exception