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"
相关文章
相关标签/搜索