Collections
Collections类是 Java 集合框架中的一个工具类,它提供了一系列静态方法,用于操作各种集合(如 List、Set、Map等)。
Collections常用方法
- 排序方法
sort(List<T> list):用于对List集合进行自然排序,要求集合中的元素必须实现Comparable接口。
List<Integer> numbers = new ArrayList<>();
numbers.add(3);
numbers.add(1);
numbers.add(2);
Collections.sort(numbers);
sort(List<T> list, Comparator<? super T> c):使用指定的比较器对 List 集合进行排序,适用于需要自定义排序规则的场景。
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 20));
people.add(new Person("Charlie", 30));
// 按年龄升序排序
Collections.sort(people, Comparator.comparingInt(Person::getAge));- 查找方法
binarySearch(List<? extends Comparable<? super T>> list, T key):使用二分查找算法在已排序的 List 中查找指定元素,要求 List 必须是已按自然顺序排序的。
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
int index = Collections.binarySearch(numbers, 2);
max(Collection<? extends T> coll) 和 min(Collection<? extends T> coll):分别用于返回集合中的最大元素和最小元素,要求集合中的元素必须实现Comparable接口。
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
int max = Collections.max(numbers);
int min = Collections.min(numbers);- 反转
reverse(List<?> list):用于反转List集合中元素的顺序。
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
Collections.reverse(numbers);- 打乱
shuffle(List<?> list):用于随机打乱List集合中元素的顺序。
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
Collections.shuffle(numbers);- 同步包装方法
synchronizedList(List<T> list)、synchronizedSet(Set<T> s) 和 synchronizedMap(Map<K,V> m):用于将非线程安全的集合转换为线程安全的集合。
List<Integer> nonSyncList = new ArrayList<>();
List<Integer> syncList = Collections.synchronizedList(nonSyncList);- 不可变集合创建方法
unmodifiableList(List<? extends T> list)、unmodifiableSet(Set<? extends T> s) 和 unmodifiableMap(Map<? extends K,? extends V> m):用于创建不可变的集合视图,对返回的集合进行修改操作会抛出UnsupportedOperationException。
List<Integer> originalList = new ArrayList<>();
originalList.add(1);
List<Integer> unmodifiableList = Collections.unmodifiableList(originalList);
try {
// 会抛出 UnsupportedOperationException
unmodifiableList.add(2);
} catch (UnsupportedOperationException e) {
System.out.println("不支持修改操作");
}- 填充
fill(List<? super T> list, T obj):用于将List集合中的所有元素替换为指定的对象。
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
Collections.fill(numbers, 0);- 替换
replaceAll(List<T> list, T oldVal, T newVal):用于将 List 集合中所有指定的旧元素替换为新元素。
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(1);
Collections.replaceAll(numbers, 1, 0);