Collections工具类

  Collections是一个操作Set,List和Map等集合的工具类。

    Collections中提供了一系列静态的方法对集合元素进行排序查询和修改等操作,还提供了对集合对象设置不可变和对集合对象实现同步控制等方法。(均为静态方法)

1. 排序操作(主要针对List接口相关)

  • reverse(List list):反转指定List集合中元素的顺序
  • shuffle(List list):对List中的元素进行随机排序(洗牌)
  • sort(List list):对List里的元素根据自然升序排序
  • sort(List list, Comparator c):自定义比较器进行排序
  • swap(List list, int i, int j):将指定List集合中i处元素和j出元素进行交换
  • rotate(List list, int distance):将所有元素向右移位指定长度,如果distance等于size那么结果不变

2、查找、替换操作

   1) static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)

    使用二分搜索法搜索指定列表,以获得指定对象在List集合中的索引。

    注意:此前必须保证List集合中的元素已经处于有序状态。

  2)static Object max(Collection coll)

    根据元素的自然顺序,返回给定collection 的最大元素。

  3)static Object max(Collection coll,Comparator comp):

    根据指定比较器产生的顺序,返回给定 collection 的最大元素。 

  4)static Object min(Collection coll):

    根据元素的自然顺序,返回给定collection 的最小元素。

  5)static Object min(Collection coll,Comparator comp):

    根据指定比较器产生的顺序,返回给定 collection 的最小元素。

  6) static <T> void fill(List<? super T> list, T obj) :

    使用指定元素替换指定列表中的所有元素。

  7)static int frequency(Collection<?> c, Object o)

    返回指定 collection 中等于指定对象的出现次数。

  8)static int indexOfSubList(List<?> source, List<?> target) :

    返回指定源列表中第一次出现指定目标列表的起始位置;如果没有出现这样的列表,则返回 -1。 

  9)static int lastIndexOfSubList(List<?> source, List<?> target)

    返回指定源列表中最后一次出现指定目标列表的起始位置;如果没有出现这样的列表,则返回 -1。

  10)static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)

    使用一个新值替换List对象的所有旧值oldVal

 

3. 同步控制

  Collectons提供了多个synchronizedXxx()方法·,该方法可以将指定集合包装成线程同步的集合,从而解决多线程并发访问集合时的线程安全问题。

  正如前面介绍的HashSet,TreeSet,arrayList,LinkedList,HashMap,TreeMap都是线程不安全的。Collections提供了多个静态方法可以把他们包装成线程同步的集合。

  3.1、方法

  1)static <T> Collection<T> synchronizedCollection(Collection<T> c)

    返回指定 collection 支持的同步(线程安全的)collection。
  2)static <T> List<T> synchronizedList(List<T> list)

    返回指定列表支持的同步(线程安全的)列表。 
  3)static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)

    返回由指定映射支持的同步(线程安全的)映射。
  4)static <T> Set<T> synchronizedSet(Set<T> s)

     返回指定 set 支持的同步(线程安全的)set。

 

      

 

 代码实现:

 1 import java.util.*;
 2 
 3 public class CollectionLinkedHaspMap {
 4     public static void main(String[] args) {
 5        LinkedList list=new LinkedList();
 6        list.add(2);
 7        list.add(4);
 8        list.add(3);
 9        list.add(1);
10         System.out.println(list);
11         Collections.reverse(list);
12         System.out.println("反向排序:"+list);
13         Collections.shuffle(list);
14         System.out.println("随机排序:"+list);
15         Collections.sort(list);
16         System.out.println("排序:"+list);
17         Collections.swap(list,1,2);
18         System.out.println("交换第二个和第三个元素:"+list);
19         System.out.println("最大元素:"+Collections.max(list));
20         Collections.replaceAll(list,2,7);
21         System.out.println("7替换2:"+list);
22     }
23 }

原文地址:https://www.cnblogs.com/ljl150/p/12300506.html