Collections 工具类常用方法:
-
排序
-
查找、替换操作
-
同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合)
一、排序
1、反转
void reverse(List list)
2、随机排序
void shuffle(List list)
3、按自然排序的升序排序
void sort(List list)
4、定制排序,由Comparator控制排序逻辑
void sort(List list, Comparator c)
5、交换两个索引位置的元素
void swap(List list, int i , int j)
6、旋转。当distance为正数时,将list后distance个元素整体移到前面。当distance为负数时,将 list的前distance个元素整体移到后面
void rotate(List list, int distance)
二、查找、替换操作
1、对List进行二分查找,返回索引,注意List必须是有序的
int binarySearch(List list, Object key)
2、根据元素的自然顺序,返回最大的元素。 类比int min(Collection coll)
int max(Collection coll)
3、根据定制排序,返回最大元素,排序规则由Comparatator类控制。类比int min(Collection coll, Comparator c)
int max(Collection coll, Comparator c)
4、用指定的元素代替指定list中的所有元素
void fill(List list, Object obj)
5、统计元素出现次数
int frequency(Collection c, Object o)
6、统计target在list中第一次出现的索引,找不到则返回-1,类比int lastIndexOfSubList(List source, list target)
int indexOfSubList(List list, List target)
7、用新元素替换旧元素
boolean replaceAll(List list, Object oldVal, Object newVal)
三、同步控制
Collections 提供了多个synchronizedXxx()方法·,该方法可以将指定集合包装成线程同步的集合,从而解决多线程并发访问集合时的线程安全问题。
我们知道 HashSet,TreeSet,ArrayList,LinkedList,HashMap,TreeMap 都是线程不安全的。Collections 提供了多个静态方法可以把他们包装成线程同步的集合。
最好不要用下面这些方法,效率非常低,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合。
方法如下:
1、返回指定 collection 支持的同步(线程安全的)collection。
synchronizedCollection(Collection<T> c)
2、返回指定列表支持的同步(线程安全的)List。
synchronizedList(List<T> list)
3、返回由指定映射支持的同步(线程安全的)Map。
synchronizedMap(Map<K,V> m)
4、返回指定 set 支持的同步(线程安全的)set。
synchronizedSet(Set<T> s)