操作集合的工具類Collections

  Java提供了一個操作set、List和Map等集合的工具類:Collections,該工具類裏提供了大量方法對集合元素進行排序、查詢和修改等操作,還提供了將集合對象設置爲不可變,對集合對象實現同步控制等方法。

排序操作

Collections提供如下的類方法用於對List集合元素進行排序

void reverse(List list):
void shuffle(List list):對List集合元素進行隨機排序
void sort(List list):
void sort(List list,Comparator c):
void swap(List list,int i,int j):
void rotate(List list,int distance):

public class SortTest
{
    public static void main(String[] args)
    {
        ArrayList nums = new ArrayList();
        nums.add(2);
        nums.add(-5);
        nums.add(3);
        nums.add(0);
        System.out.println(nums); // 輸出:[2, -5, 3, 0]
        Collections.reverse(nums); // 將List集合元素的次序反轉
        System.out.println(nums); // 輸出:[0, 3, -5, 2]
        Collections.sort(nums); // 將List集合元素的按自然順序排序
        System.out.println(nums); // 輸出:[-5, 0, 2, 3]
        Collections.shuffle(nums); // 將List集合元素的按隨機順序排序
        System.out.println(nums); // 每次輸出的次序不固定
    }
}

查找、替換操作

int binarySearch(List list,Object key):
Object max(Collection coll):
Object max(Collection coll,Comparator comp):
Object min(Collection coll):
Object min(Collection coll,Comparator comp):
void fill(List list,Object obj):
int frequency(Collection c,Object o):
int indexOfSubList(List source,List target):
int lastIndexOfSubList(List source,List target):
boolean replaceAll(List list,Object oldval,Object newval):

同步控制

  Collections類中提供了多個synchronizedXxx()方法,該方法可以將指定集合包裝成線程同步的集合,從而可以解決多線程併發訪問集合時的線程安全問題。
  Java中常用的集合框架中的實現類HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList、HashMap和TreeMap都是線程不安全的。如果有多個線程訪問它們,而且有超過一個的線程試圖修改它們,則存在線程安全的問題。

public class SynchronizedTest
{
    public static void main(String[] args)
    {
        // 下面程序創建了四個線程安全的集合對象
        Collection c = Collections
            .synchronizedCollection(new ArrayList());
        List list = Collections.synchronizedList(new ArrayList());
        Set s = Collections.synchronizedSet(new HashSet());
        Map m = Collections.synchronizedMap(new HashMap());
    }
}
發佈了51 篇原創文章 · 獲贊 23 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章