java.util.Collections 类

来源:互联网 发布:用eclipse写java程序 编辑:程序博客网 时间:2024/05/01 11:44

Collections 类

java.util.Collections 类中定义了多种集合操作方法,实现了对集合操作方法,实现了对集合元素的排序、取极值、批量拷贝、集合结构转换、循环移位以及匹配性检查等功能,常用 static 方法如下:

注意如果传入Collections类静态方法的集合参数为空时会抛出空指针异常
1.addAll(Collection<? super T> c, T... elements)    //可以添加单个元素或是T数组到指定c集合中

2.sort(List<T> list) //按照T元素默认的比较关系进行排序(内部自定义排序)     //T是实现Comparable接口的类

3.sort(List<T> list, Comparator<? super T> c) //按照自定义排序规则进行排序(外部自定义排序)

   public static void shuffle(List list);           // 混排,与 sort 相反,完全打乱排列顺序

   public static void copy(List dest, list src);      // 覆盖,如果 dest 更长,则其剩余元素不受影响

   public static void fill(List list, Object o);      // 使用指定元素替换指定列表中的所有元素

   swap(List<?> list, int i, int j)
          在指定列表的指定位置处交换元素。
4.int binarySearch(List<?extends Comparable<? super T>> list,T key)
//二分法查找集合中的是否包含指定的元素
//要求元素继承自Comparable接口
//要求list是排号顺序的
//返回的是查找到的索引位置,如果没有找到则返回-1
5.binarySearch(List<?extends T> list,T key,Comparator<? super T> c)
//二分法查找指定元素,但是会按照传入的Comparator比较元素的大小
//要求list是排号顺序的
//返回的是查找到的索引位置,如果没有找到则返回-1
6.copy(List<? super T> dest, List<? extends T> src)
//拷贝src集合元素到目标集合中
//内部实现就是将判断src的大小是否大于des的大小,然后对src进行遍历,并将取出的值
//添加到des集合中
7.enumeration(Collection<T> c)
//返回一个指向collection的枚举
8.max(Collection<? extends T> coll)
//返回集合中最大的元素
9.max(Collection<? extends T> coll, Comparator<? super T> comp)
//按照自定义的比较规则返回集合中最大的元素
10.min(Collection<? extends T> coll)
11.min(Collection<? extends T> coll, Comparator<? super T> comp)
12.reverse(List<?> list)
//反置有序的集合

13.synchronizedList(List<T> list)
//返回一个安全的list
14.synchronizedMap(Map<K,V> m)
//返回安全的map
15.synchronizedSet(Set<T> s)
//返回安全的set
16. replaceAll(List<T> list, T oldVal, T newVal)
          使用另一个值替换列表中出现的所有某一指定值。
17.static unmodifiableCollection(Collection<? extends T> c)  返回指定 collection 的不可修改视图。

18.unmodifiableList(List<? extends T> list)  返回指定列表的不可修改视图

19.static int frequency(Collection<?> c, Object o) 返回指定 collection 中等于指定对象的元素数。

20.newSetFromMap(Map<E,Boolean> map) 返回指定映射支持的 set。

例子:

import java.util.Vector;import java.util.ArrayList;import java.util.Collections;import java.util.Enumeration;public class TestCollections {public static void main(String[] args) {ArrayList alist = new ArrayList();alist.add(7);alist.add(55);alist.add(44);alist.add(33);alist.add(12);alist.add(11);System.out.println(" 原列表 : " + alist);Collections.sort(alist);System.out.println(" 排序后 : " + alist);Collections.reverse(alist);System.out.println(" 逆序后 : " + alist);Collections.shuffle(alist);System.out.println(" 混排后 : " + alist);Collections.rotate(alist, 2);System.out.println(" 移位后 : " + alist);ArrayList blist = new ArrayList();blist.add(55);blist.add(66);System.out.println(" 新列表 : " + blist);Collections.copy(alist, blist);System.out.println(" 拷贝后 : " + alist);System.out.println(" 列表中出现元素 66 的次数 : "+ Collections.frequency(alist, 66));System.out.println(" 列表中元素的最大值 : " + Collections.max(alist));System.out.println(" 列表中元素的最小值 : " + Collections.min(alist));Enumeration en = createDemoEnumeration();ArrayList clist = Collections.list(en);System.out.println("Enumeration->ArrayList: " + alist);}public static Enumeration createDemoEnumeration() {Vector v = new Vector();v.add("Zhang");v.add("Wang");v.add("Liao");return v.elements();}}


结果输出:

原列表 : [7, 55, 44, 33, 12, 11]
 排序后 : [7, 11, 12, 33, 44, 55]
 逆序后 : [55, 44, 33, 12, 11, 7]
 混排后 : [12, 55, 7, 11, 44, 33]
 移位后 : [44, 33, 12, 55, 7, 11]
 新列表 : [55, 66]
 拷贝后 : [55, 66, 12, 55, 7, 11]
 列表中出现元素 66 的次数 : 1
 列表中元素的最大值 : 66
 列表中元素的最小值 : 7
Enumeration->ArrayList: [55, 66, 12, 55, 7, 11]

0 0
原创粉丝点击