Collections工具类
Collections
Java⾥关于集合的 ⼯具类,包含有各种有关集合操作的静态多态 ⽅法,不能实例化(把构造函 数私有化)。
Collection 与 Collections 区别
- Collection 是接 ⼝,提供了对集合对象进 ⾏基本操作的通 ⽤接 ⼝ ⽅法,List、Set 等多种具体的 实现类。
- Collections 是 ⼯具类,专 ⻔操作 Collection 接 ⼝实现类 ⾥ ⾯的元素。
常见方法
排序
@Test
public void collectionsIteratorTesting() {
ArrayList<String> list = new ArrayList<>();
list.add("bbb");
list.add("aaa");
list.add("ccc");
System.out.println(list);////不指定排序,默认按照自然升序排序 [aaa, bbb, ccc]
Collections.sort(list,Comparator.naturalOrder()); //升序 [aaa, bbb, ccc]
Collections.sort(list,Comparator.reverseOrder()); //降序 [ccc, bbb, aaa]
Collections.shuffle(list);//随机排序
System.out.println(list);
}
获取最值 max/min
//初始化容器
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("a",15));
list.add(new Student("b",18));
list.add(new Student("c",12));
//获取最大元素
Student maxStudent = Collections.max(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
});
System.out.println(maxStudent);//Student(name=b, age=18)
//获取最小元素
Student minStudent = Collections.min(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
});
System.out.println(minStudent);//Student(name=c, age=12)
}
创建不可变集合
public void collectionsUnmodifiableTesting() {
//创建不可变集合List
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list = Collections.unmodifiableList(list);
//创建不可变集合Set
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set = Collections.unmodifiableSet(set);
//创建不可变Map
Map<String, String> map = new HashMap<>();
map.put("a", "jack");
map.put("b", "alice");
map.put("c", "Tom");
map = Collections.unmodifiableMap(map);
}