API解讀:
Collections Collections和Arrays一樣是一個(gè)不可實(shí)例化的類,提供了一些靜態(tài)方法來操作Collection。 1.排序 sort public static void sort(List list) public static void sort(List list, Comparator c) 用于對(duì)List排序,可以使用自然排序,也可以指定Comparator,返回的是從小到大的有序List。
2.二分查找 binarySearch public static int binarySearch(List list, Object key) public static int binarySearch(List list, Object key, Comparator c) 應(yīng)用和排序一樣,List必須是有序的,否則改方法無作用。
3.反轉(zhuǎn) public static void reverse(List list) 適用于List,返回的List和原來的順序相反
4.打亂順序 public static void shuffle(List list) public static void shuffle(List list, Random rnd) 就是把原來的List的順序隨機(jī)弄亂。
5.元素直接置換 public static void swap(List list, int i, int j) 這個(gè)方法顯得有點(diǎn)牽強(qiáng),我覺得沒有必要出現(xiàn)在API里面,實(shí)現(xiàn)就是一條語句: list.set(i, list.set(j, list.get(i)));
6.填充 public static void fill(List list, Object obj) 把List中的元素全部用一個(gè)值填充
7.拷貝 public static void copy(List dest, List src) 把源List拷貝到目的List,目的List必須足夠大
8.最小值 public static Object min(Collection coll) public static Object min(Collection coll, Comparator comp)
9.最大值 public static Object max(Collection coll) public static Object max(Collection coll, Comparator comp)
10.移動(dòng) public static void rotate(List list, int distance) 元素右移,有點(diǎn)像 int a=0xff>>8的味道
11.替換 public static boolean replaceAll(List list, Object oldVal, Object newVal) 看方法名就知道了
12.求子List public static int indexOfSubList(List source, List target) public static int lastIndexOfSubList(List source, List target) 和String類的indexOf和lastIndexOf類似
13.同步 public static Collection synchronizedCollection(Collection c) public static List synchronizedList(List list) public static Map synchronizedMap(Map m) public static Set synchronizedSet(Set s) public static SortedMap synchronizedSortedMap(SortedMap m) public static SortedSet synchronizedSortedSet(SortedSet s) 因?yàn)镃ollection框架中的類大部分都是未經(jīng)過同步的,可以通過這些方法同步注意這里沒有使用方法重載,因?yàn)槟敲疵煌?。另外,返回的雖然是一個(gè)同步了的Collection 但是通過迭代器訪問時(shí)仍然需要自己同步,因?yàn)榈鞣祷貨]有被同步。
14.只讀 public static Collection unmodifiableCollection(Collection c) public static List unmodifiableList(List list) public static Map unmodifiableMap(Map m) public static Set unmodifiableSet(Set s) public static SortedMap unmodifiableSortedMap(SortedMap m) public static SortedSet unmodifiableSortedSet(SortedSet s) 這些方法返回一個(gè)只讀的Collection,我發(fā)現(xiàn)這個(gè)有的時(shí)候真的特別有用,如果你試圖調(diào)用修改方法,會(huì)獲得一個(gè)UnsupportedOperationException系統(tǒng)異常。
15.常量 public static final List EMPTY_LIST = new EmptyList() public static final Map EMPTY_MAP = new EmptyMap() public static final Set EMPTY_SET = new EmptySet() 這些常量就是表示空的集合,本身不是null,但是不包含任何元素。
16.單元素集合 public static Set singleton(Object o) public static List singletonList(Object o) public static Map singletonMap(Object key, Object value) 這些集合只含有一個(gè)元素。
17.多元素集合 public static List nCopies(int n, Object o) 返回一個(gè)List,含有n個(gè)相同的元素
18.比較器常量 public static Comparator reverseOrder() 這個(gè)比較器和自然順序的排序相反。
19.最后2個(gè) public static ArrayList list(Enumeration e) public static Enumeration enumeration(final Collection c) List和Enumeration的轉(zhuǎn)換,由于Enumeration屬于過時(shí)的API,應(yīng)該沒有什么機(jī)會(huì)用到他們。 整個(gè)方法都在這里,主要是對(duì)List的操作,Set和Map的相對(duì)少一些。
|
|