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());
}
}