介绍
深入浅析收集工具类?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
集合工具类提供了大量针对收集/地图的操作,总体可分为四类,都为静态(静态)方法:
<强> 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); } 深入浅析收集工具类