Collections工具类
Collections类
Collections工具类提供了大量针对Collection/Map的操作,总体可分为四类,都为静态(static)方法:
- 排序操作(主要针对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. 查找和替换(主要针对Collection接口相关)
- binarySearch(List list, Object key):使用二分搜索法,以获得指定对象在List中的索引,前提是集合已经排序
- max(Collection coll):返回最大元素
- max(Collection coll, Comparator comp):根据自定义比较器,返回最大元素
- min(Collection coll):返回最小元素
- min(Collection coll, Comparator comp):根据自定义比较器,返回最小元素
- fill(List list, Object obj):使用指定对象填充
- frequency(Collection Object o):返回指定集合中指定对象出现的次数
- replaceAll(List list, Object old, Object new):替换
package com.vince;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Collections工具类
* @author vince
* @description
*/
public class CollectionsDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("jack");
list.add("tom");
list.add("lily");
list.add("lily");
// Collections.reverse(list);
// Collections.shuffle(list);
// Collections.sort(list);
// Collections.sort(list, c);
// Collections.swap(list, 0, 2);
// Collections.rotate(list, 1);
// System.out.println(Collections.binarySearch(list, "tom"));
// System.out.println(Collections.max(list));
// System.out.println(Collections.min(list));
// Collections.fill(list, "bin");
// System.out.println(Collections.frequency(list, "lily"));
// Collections.replaceAll(list, "lily", "bin");
// List<String> syncList = Collections.synchronizedList(new ArrayList<String>());
List<String> sList = Collections.emptyList();
//sList.add("bin");
Collections.sort(list,Collections.reverseOrder());
System.out.println(list);
}
public static List<String> query(){
List<String> list = null;
//
return Collections.emptyList();
}
}
-
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那么结果不变
-
binarySearch(List list, Object key):使用二分搜索法,以获得指定对象在List中的索引,前提是集合已经排序
返回值结果 为 1 -
max(Collection coll):返回最大元素 返回tom t最大
-
max(Collection coll, Comparator comp):根据自定义比较器,返回最大元素 自行输入
-
min(Collection coll):返回最小元素 返回jack j最小
-
min(Collection coll, Comparator comp):根据自定义比较器,返回最小元素 自行输入试试
-
fill(List list, Object obj):使用指定对象填充
填充list 结果全都是bin
-
frequency(Collection Object o):返回指定集合中指定对象出现的次数
结果是2次 -
replaceAll(List list, Object old, Object new):替换
3. 同步控制
Collections工具类中提供了多个synchronizedXxx方法,该方法返回指定集合对象对应的同步对象,
从而解决多线程并发访问集合时线程的安全问题。
HashSet、ArrayList、HashMap都是线程不安全的,如果需要考虑同步,则使用这些方法。这些方法主要有:synchronizedSet、synchronizedSortedSet、synchronizedList、synchronizedMap、synchronizedSortedMap。
特别需要指出的是,在使用迭代方法遍历集合时需要手工同步返回的集合。
还有好多 set map 什么的 都可以使线程安全
- 设置不可变集合
Collections有三类方法可返回一个不可变集合:
emptyXxx():返回一个空的不可变的集合对象
singletonXxx():返回一个只包含指定对象的,不可变的集合对象。
unmodifiableXxx():返回指定集合对象的不可变视图
构造一个空的list 不可变 不支持此类操作
所以这个构造空集合list有什么用呢
减少重复判断返回的集合是否为空的次数 减少空指针报错
就如你的一个方法返回的是一个集合list 满足条件时返回list 不满足则返回null 然后主函数接收后进行判断 是否为空 不为空再进行比如list.size()的类似操作
有空集合的话 当不满足条件就返回空集合 这样主函数接收后就不用判断是否为空 直接使用 反正空集合的size为0 不影响操作
- 其它
-
disjoint(Collection<?> c1, Collection<?> c2) - 如果两个指定 collection 中没有相同的元素,则返回 true。
-
addAll(Collection<? super T> c, T… a) - 一种方便的方式,将所有指定元素添加到指定 collection 中。
Comparator reverseOrder(Comparator cmp) - 返回一个比较器,它强行反转指定比较器的顺序。如果指定比较器为 null,则此方法等同于 reverseOrder()(换句话说,它返回一个比较器,该比较器将强行反转实现 Comparable 接口那些对象 collection 上的自然顺序)。
类似于实现倒序功能
返回一个比较器 倒序的比较器 从大到小的比较器
然后sort排序 从大到小