7.11 操作集合的工具类:Collections
7.11.1 排序操作
Collections 提供了如下方法用于对 List 集合元素进行排序:
- static void reverse(List list):反转集合 list 中元素的顺序。
- static void shuffle(List list):对集合 list 中的元素进行随机排序(类似于“洗牌”)。
- static void sort(List list):根据元素的自然顺序对指定 List 集合的元素按升序进行排序。
- static void sort(List list, Comparator c):根据指定 Comparator 产生的顺序对 List 集合的元素进行排序。
- static void swap(List list, int i, int j):将集合 list 中 i 处元素和 j 处元素进行交换。
- static void rotate(List list, int distance):调用该函数后,集合 list 中第 i 处的元素会变成 list 未变化前第 (i - distance) mod list.size() 处的元素,i 属于 0 到 list.size() - 1。
- 该函数可理解为将 list 中的元素做“循环位移”动作:若 distance 是正整数,则将 list 中的元素向右循环位移 distance 位;若 distance 是负整数,则向左循环位移。
- 例如 list 为 [a, b, c, d],调用 rotate(list, 1) 之后,list 变为 [d, a, b, c]。
7.11.2 查找、替换操作
Collections:
- static int binarySearch(List list, Object key):使用二分搜索法搜索指定对象 key 在集合 list 中的索引。使用该方法必须保证 list 中的元素已经处于有序状态。
- static Object max(Collection coll):根据元素的自然顺序,返回指定集合中的最大元素。
- static Object max(Collection coll, Comparator comp):根据指定 Comparator 产生的顺序,返回给定集合的最大元素。
- static Object min(Collection coll)
- static Object min(Collection coll, Comparator comp)
- static void fill(List list, Object obj):使用指定元素 obj 替换集合 list 中的所有元素。
- static int frequency(Collection c, Object o):返回集合 c 中对象 o 出现的次数。
- static int indexOfSubList(List source, List target):返回子 List 对象在母 List 对象中第一次出现的位置索引;如果没有,则返回 -1。
- static int lastIndexOfSubList(List source, List target)
- static boolean replaceAll(List list, Object oldVal, Object newVal):使用一个新值 newVal 替换集合 list 中所有的旧值 oldVal。
7.11.3 同步控制
下面示例是四个同步集合对象的创建方法:
Collection c = Collections.synchronizedCollection(new ArrayList());
List list = Collections.synchronizedList (new ArrayList());
Set s = Collections.synchronizedSet (new HashSet());
Map m = Collections.synchronizedMap (new HashMap());
7.11.4 设置不可变集合
Collections 提供了如下三类方法来返回一个不可变的集合:
-
返回一个空的、不可变的集合对象:
- static List emptyList()
- static Map emptyMap()
- static Set emptySet()
-
返回一个只包含指定对象(只有一个或一项元素)的、不可变的集合对象:
- static <T> List<T> singletonList(T o)
- static <K, V> Map<K, V> singletonMap(K key, V value)
- static <T> Set<T> singleton(T o)
-
返回指定集合对象的不可变视图:
- static
Collection unmodifiableCollection(Collection<? extends T> c) - static
List unmodifiableList(List<? extends T> list) - static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)
- static
Set unmodifiableSet(Set<? extends T> s)
- static