1. 程式人生 > >Collections工具類 的用法

Collections工具類 的用法

1. Collections和Collection有什麼區別?

    1. Collection 是集合框架中的一個頂層介面,它裡面定義了單列集合的共性方法。它有兩個常用的子介面,

      List:對元素都有定義索引。有序的。可以重複元素。   Set:不可以重複元素。無序。

      2.  Collections 是集合框架中的一個工具類。該類中的方法都是靜態的,提供的方法中有可以對list集合進行排序,二分查詢等方法。

      通常常用的集合都是執行緒不安全的。因為要提高效率。如果多執行緒操作這些集合時,可以通過該工具類中的同步方法,將執行緒不安全的集合,轉換成安全的。

 

2. Collections工具類的常用方法

 

排序操作

 

   1.  void reverse(List list):反轉

   2.  void shuffle(List list),隨機排序

   3.  void sort(List list),按自然排序的升序排序

   4. void sort(List list, Comparator c);定製排序,由Comparator控制排序邏輯

        5. void swap(List list, int i , int j),交換兩個索引位置的元素

        6. void rotate(List list, int distance),旋轉。當distance為正數時,將list後distance個元素整體移到前面。當distance為負數時,將 list的前distance個元素整體移到後面。

 

查詢,替換操作

   1.  int binarySearch(List list, Object key), 對List進行二分查詢,返回索引,注意List必須是有序的

   2.  int max(Collection coll),根據元素的自然順序,返回最大的元素。 類比int min(Collection coll)

   3.  int max(Collection coll, Comparator c),根據定製排序,返回最大元素,排序規則由Comparatator類控制。類比int min(Collection coll, Comparator c)

   4.  void fill(List list, Object obj),用元素obj填充list中所有元素

   5.  int frequency(Collection c, Object o),統計元素出現次數

   6.  int indexOfSubList(List list, List target), 統計targe在list中第一次出現的索引,找不到則返回-1,類比int lastIndexOfSubList(List source, list target).

   7.  boolean replaceAll(List list, Object oldVal, Object newVal), 用新元素替換舊元素。

同步控制

Collections中幾乎對每個集合都定義了同步控制方法,例如 SynchronizedList(), SynchronizedSet()等方法,來將集合包裝成執行緒安全的集合。下面是Collections將普通集合包裝成執行緒安全集合的用法

1 package collection.collections;
2 
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.Collections;
6 import java.util.HashMap;
7 import java.util.HashSet;
8 import java.util.List;
9 import java.util.Map;
10 import java.util.Set;
11 
12 public class SynchronizedTest {
13     public static void main(String[] args) {
14         Collection c = Collections.synchronizedCollection(new ArrayList());
15         List list = Collections.synchronizedList(new ArrayList());
16         Set s = Collections.synchronizedSet(new HashSet());
17         Map m = Collections.synchronizedMap(new HashMap());
18     }
19 }

 

 

參考:https://www.cnblogs.com/fysola/p/6021134.html