深入浅析收集工具类

  介绍

深入浅析收集工具类?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

集合工具类提供了大量针对收集/地图的操作,总体可分为四类,都为静态(静态)方法:

<强> 1。排序操作(主要针对列表接口相关)

    <李>,反向(列表列表):反转指定列表集合中元素的顺序李 <>李shuffle(列表列表):对列表中的元素进行随机排序(洗牌) <李>分类列表(列表):对列表里的元素根据自然升序排序李 <李>(列表,列表比较器c):自定义比较器进行排序李 <>李交换(名单列表,int, int j):将指定列表集合中我处元素和j出元素进行交换李 <李>,旋转(名单列表,int距离):将所有元素向右移位指定长度,如果距离等大小于那么结果不变,
      李,
公共空testSearch () {
  System.out.println(“给定的清单:“+列表);
  System.out.println(马克斯:“;+ Collections.max(列表));
  System.out.println(分钟:“;+ Collections.min(列表));
  System.out.println(“频率:“;+ Collections.frequency(列表,“李四“));
  集合。replaceAll(列表,“李四“,“aa李四“);
  System.out.println (“replaceAll之后:“;+列表);//如果binarySearch的对象没有排序的话,搜索结果是不确定的
  System.out.println (“binarySearch在排序之前:“+集合。binarySearch(列表,“c赵五“));
  Collections.sort(列表);//排序之后,结果出来了
  System.out.println (“binarySearch在排序之后:“+集合。binarySearch(列表,“c赵五“));
  
  集合。填充(列表,“A");
  System.out.println(填:“;+列表);
  }

输出

给定的清单:[b张三,d孙六,一个李四,e钱七,c赵五]
马克斯:e钱七
分钟:一个李四
频率:1
replaceAll之后:[b张三,d孙六,aa李四,e钱七,c赵五]
binarySearch在排序之前:4
binarySearch在排序之后:2
填充:[一个,,,,)

<强> 3。同步控制

集合工具类中提供了多个synchronizedXxx方法,该方法返回指定集合对象对应的同步对象,从而解决多线程并发访问集合时线程的安全问题.HashSet, ArrayList, HashMap都是线程不安全的,如果需要考虑同步,则使用这些方法。这些方法主要有:synchronizedSet, synchronizedSortedSet, synchronizedList, synchronizedMap, synchronizedSortedMap。

特别需要指出的是,在使用迭代方法遍历集合时需要手工同步返回的集合。

地图m=集合。synchronizedMap(新HashMap ());
  …
  集合s=m.keySet ();//必要# 39;t同步块
  …
  同步(m){//同步>公共空testUnmodifiable () {
  System.out.println(“给定的清单:“+列表);
  ListunmodList=Collections.unmodifiableList(列表);
  unmodList.add(“再加个试试!“);//抛出:java.lang.UnsupportedOperationException//这一行不会执行了
  System.out.println(“新的unmodList:“;+ unmodList);
  }

深入浅析收集工具类