Collections 裏面的幾個你還不知道的方法

java.util.Collections 這個類你可能知道,也可能常常用裏面的像 sort()reverse() 這樣的方法。但這個類當中還有幾個方法,估計你到如今還不知道,還在本身手寫循環來實現。java

✦ boolean disjoint(Collection<?> c1, Collection<?> c2)`

這個方法檢查兩個集合是否沒有相同元素。若是存在相同元素則返回 false,不然返回 true。code

✦ emptyList() / emptyMap() / emptySet()

這些方法建立空的 List / Map / Set。有人會問,我直接用 new ArrayList() 不就行了?其實區別在於,這些方法建立的空集合都是保證永遠爲空,不容許添加元素進去的。對象

✦ void fill(List<? super T> list, T obj)

這個方法用一個指定的對象來替換集合中的全部元素。好比你要對某個集合「清零」,同時保持集合的元素數量不變,那麼能夠用這個方法。get

✦ boolean replaceAll(List<T> list, T oldVal, T newVal)

這個方法將集合中的指定元素所有替換成新元素。io

✦ ArrayList<T> list(Enumeration<T> e)

這個方法幫你將一個 Enumeration 對象轉換爲 ArrayList 對象。好比說咱們要獲得 HttpServletRequest 對象中全部的參數名,就能夠寫:class

ArrayList<String> paramNames = Collections.list(request.getParameterNames());

✦ min(Collection<? extends T> coll) / max(Collection<? extends T> coll) / min(Collection<? extends T> coll, Comparator<? super T> comp) / max(Collection<? extends T> coll, Comparator<? super T> comp)

這些方法用來從集合中取最大最小值,你還能夠傳入自定義的用來比較元素大小的方法。List

✦ void rotate(List<?> list, int distance)

這個方法用來「滾動」集合的元素,好比當 distance 爲 1 時,表示全部元素向右滾動一位,其中最後一個元素滾動到第一位。循環

✦ void swap(List<?> list, int i, int j)

這個方法用來交換 List 中第 i 位和第 j 位的元素。request

✦ int frequency(Collection<?> c, Object o)

這個方法返回指定的元素在集合中出現了多少次。若是參數 o 爲 null 的話,它一樣會返回 null 元素的個數。方法

✦ List<T> nCopies(int n, T o)

這個方法返回包含 n 個相同元素的 List。注意 List 內容是不可變的。有人會問,那這個方法有什麼用呢?你能夠用它結合 List.addAll() 來填充一個可變的 List。好比:

List<String> list = new ArrayList<>();
...
list.addAll(Collections.nCopies(10, "A")); // 在 list 的末尾添加 10 個 "A"
相關文章
相關標籤/搜索