首页 > 代码库 > Collections

Collections

Collections:用来操作Set,List和Map等集合的工具类,提供大量方法对集合进行排序,查找和修改等操作,还提供了将集合对象设置为不可变,对象和对象实现同步控制等方法

排序操作:

  对List集合元素进行排序:

  void reverse(List l):反转指定集合的元素

  void shuffle(List l):对集合元素进行随机排序,模拟洗牌动作

  void sort(List l):根据元素的自然顺序对指定集合进行升序排序

  void sort(List l, Comparator c):按c对集合排序

  void swap(List l, int i, int j):将集合中i处元素和j处元素进行调换

  void rotate(List l, int distance):当distance为正数时,将l集合后distance个元素整体移到前面;为负数时,将l前distance个元素整体移到后面。不会改变集合长度

  ArrayList ar = new ArrayList(); Collections.reverse(ar);

查找操作:

  int binarySearch(List l, Object key):使用二分搜索法搜索指定List,获得指定对象在List中的索引,需要保证List中元素处于有序状态

  Object max(Collection coll):根据自然排序,返回集合中最大的元素

  Object max(Collection coll, Comparator c):根据c指定的顺序,返回最大的元素

  Object min(Collection coll):同上

  Object min(Collection coll, Comparator c):同上

替换操作:

  void fill(List l, Object o):使用指定元素o替换指定List集合中的所有元素

  int frequency(Collection coll, Object o):返回指定集合中指定元素出现的次数

  int indexOfSubList(List source, List target):返回子List对象在父List对象中第一次出现的索引,没有则返回-1

  int lastIndexOfSubList(List source, List target):返回子List对象在父List对象中最后一次出现的索引,如果父List中没有出现这样的子List,返回-1

  boolean replaceAll(List l, Object oldVal, Object newVal):使用一个新值newVal替换List对象的所有旧值oldVal

同步控制:

  Collections类提供多个synchronizedXxx()方法,可以将指定集合包装成线程同步的集合,解决多线程并发访问集合时的线程安全问题:

  Map m = Collectoins.synchronizedMap(new HashMap());

设置不可变集合:

  Collections提供三个类方法来返回一个不可变集合:

  emptyXxx():返回一个空的,不可变的集合对象,此处的集合既可以是List,也可以是Set,SortedSet,还可以是Map,SortedMap等

  singletonXxx():返回一个只包含指定对象(只有一个或一项元素)的,不可变的集合对象此处的集合既可以是List,还可以是Map

  unmodifiableXxx():返回指定集合对象的不可变视图,此处的集合既可以是List,也可以是Set,SortedSet,还可以是Map,SortedMap等

  这三个方法参数是原有的集合对象,返回值的该对象的只读版本

  Map m = Collections.unmodifiableMap(map);

Collections