1.概念
参考操作数组的工具类 : Arrays.Collections在java.util包下,是操作集合框架(List, Set, Map等)的工具类.
2.常用方法(有个印象,不会就查API)
Collections提供了一系列静态(static)的方法对集合元素进行排序,查询和修改等操作,还提供了对集合对象设置不可变,对集合对象实现同步控制等方法.
方法较多,只截取了一部分.
(1). 排序操作
- reverse(List list) 反转list中元素顺序.
- shuffle(List list) 对list中的元素进行随机排序.
- sort(List list) 按照元素的自然顺序对List中的元素按升序排序.
- sort(List list, Comparator) 根据指定的Comparator的顺序对list中的元素排序.
- swap(List list, int i, int j) 将list中第i个元素与第j个元素互换
@Test public void Test1() { List list = new ArrayList(); list.add(12); list.add(78); list.add(67); list.add(45); list.add(56); list.add(34); list.add(23); for (Object obj : list) { System.out.print(obj + "\t"); } System.out.println(); Collections.reverse(list); for (Object obj : list) { System.out.print(obj + "\t"); } } 控制台 12 78 67 45 56 34 23 23 34 56 45 67 78 12
@Test public void test2() { List list = new ArrayList(); list.add(12); list.add(78); list.add(67); list.add(45); list.add(56); list.add(34); list.add(23); //自然排序,按照升序排序 Collections.sort(list); for (Object obj : list) { System.out.print(obj + "\t"); } System.out.println(); //定制排序,按照comparator指定的顺序排序 Collections.sort(list, new Comparator(){ @Override public int compare(Object o1, Object o2) { if (o1 instanceof Integer && o2 instanceof Integer) { Integer i1 = (Integer) o1; Integer i2 = (Integer) o2; return -(i1 - i2); } throw new RuntimeException(); } }); for (Object obj : list) { System.out.print(obj + "\t"); } } 控制台 12 23 34 45 56 67 78 78 67 56 45 34 23 12
(2). 查找
- Object max(Collection collection)按照集合的自然顺序返回集合中最大的元素.实际上返回最右边的元素.
- Object max(Collection collection, Comparator comparator) 按照comparator指定的顺序,返回集合中最大的元素.
- Object min(Collection collection)按照集合的自然顺序返回集合中最小的元素.实际上返回最左边的元素.
- Object min(Collection collection, Comparator comparator) 按照comparator指定的顺序,返回集合中最小的元素.
(3). 复制, 替换
- void copy(List dest, List src) 将src的内容复制到dest上.该必须满足dest.size()不小于src.size().
- boolean replaceAllList(List list, Object oldval, Object newval) 使用新的值替换list对象中所有的旧值.
- 提供了多种unmodifiableXxx(),返回指定的Xxx不可变的视图对象.
@Test public void Test3() { List list = new ArrayList(); list.add(12); list.add(78); list.add(67); list.add(45); list.add(56); list.add(34); list.add(23); //list1是不可变的List对象 List list1 = Collections.unmodifiableList(list); //报错 list1.add(23); }
(4). 同步
- 提供了多种synchronizedXxx方法,该方法可将指定集合包装成线程安全的集合.其实源码就是用synchronized包了起来.