Collections(集合操作的工具類)&集合的同步控制&不可變集合的設置


以下幾個方法用於對List集合元素進行排序:

1、static void reverse(List list):反轉指定List集合中元素的順序。

2、static void shuffle(List list):對List中的元素進行隨機排序(類似於洗牌的動作)。

3.static void sort(List list):根據元素的自然順序對指定的List 里的元素按升序排序。

4、static void sort(List list,Comparator c):根據指定Comparator產生的順序對List集合的元素進行排序。

5、static void swap(List list,int i,int j):將指定List集合中i處元素和j出元素進行交換。

6、static void rotate(List list,int distance):將指定集合中i處元素和list.length-1-i處的元素進行交換。

 

查找和替換的方法:

1、static int binarySearch(List list,Object key):使用二分搜索法,以獲得指定對象在List中的索引,前提是集合元素已是有序狀態。

2、static Object max(Collection coll):根據元素的自然排序,返回給定集合中的最大元素。

3、static Object max(Collection coll,Comparator comp):根據指定Comparator產生的順序,返回給定集合中的最大元素。

4、static Object min(Collection coll):根據元素的自然排序,返回給定集合中的最小元素。

5、static Object min(Collection coll,Comparator comp):根據指定Comparator產生的順序,返回給定集合中的最小元素。

6、static void fill(List list,Object obj):使用指定元素obj替換List里的所有元素。

7、static int frequency(Collection Object o):返回指定集合中等於指定對象的元素數量。

8、static int indexOfSubList(List source,List target):返回子list對象在母list中第一次出現的索引,如果沒有則返回-1。

9、static int lastIndexOfSubList(List source,List target):返回子list對象在母list中最后一次出現的索引,如果沒有則返回-1。

10、static boolean replaceAll(List list,Object old,Object new):使用一個新值替換List中所有的舊值。

 

同步控制:

    Collection類中提供了多個synchronizedXxx方法,該方法返回指定集合對象對應的同步對象,從而解決多線程並發訪問集合時線程的安全問題。java中常用的HashSet、ArrayList、HashMap都是線程不安全的,如果多條線程訪問他們,而且多於一條的線程試圖修改它們,則可能出錯。以下方法直接將新建的集合傳給了Collections的synchronizedXxx方法,這樣就直接獲取它們的線程安全實現版本。

public static void main(String[] args) {
    Collection c=Collections.synchronizedCollection(new ArrayList());
  List l=Collections.synchronizedList(new ArrayList());
  Set s=Collections.synchronizedSet(new HashSet());
  Map m=Collections.synchronizedMap(new HashMap());
   }

 

設置不可變集合:不可變集合對象只能訪問不能修改

Collections有三類方法可返回一個不可變集合:

1、emptyXxx():返回一個空的不可變的集合對象

2、singletonXxx():返回一個只包含指定對象的,不可變的集合對象。

3、unmodifiableXxx():返回指定集合對象的不可變視圖

public static void main(String[] args) {
  //創建一個空的,不可變的List對象
  List unmodList =Collections.emptyList();
  //創建一個只有一個元素且不可變的set對象
     Set unmodSet =Collections.singleton("唯一的");
     Map a=new HashMap();
     a.put("語文", 80);
     a.put("java", 90);
     //返回map對象對應的不可變版本
     Map unmodMap =Collections.unmodifiableMap(a);
     //以下代碼都將引發UnsupportedOperationException異常
     unmodList.add("hello");
     unmodSet.add("kitty");
     unmodMap.put("語文", 70) 
 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM