• 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 }

  • 相关阅读:
    Educational Codeforces Round 14
    2016 Multi-University Training Contest 4
    2016 Multi-University Training Contest 2
    Codeforces
    BZOJ1776
    Codeforces Round #261 (Div. 2)
    String Painter, Chengdu 2008, LA4394
    Codeforces Round #239 (Div. 1)C, 407C
    python语句和语法
    Python快速入门——容易忽略的技巧
  • 原文地址:https://www.cnblogs.com/ljl150/p/12300506.html
Copyright © 2020-2023  润新知