Collections
是 Java 提供的一个工具类,包含了许多静态方法,用于对集合(如 List
、Set
、Map
等)进行各种操作。以下是 Collections
类中常用的方法及其使用方式:
1. 排序操作
sort(List<T> list)
:对List
集合进行自然排序(元素需实现Comparable
接口)。sort(List<T> list, Comparator<? super T> c)
:对List
集合进行定制排序(传入Comparator
对象)。
示例:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
// 自然排序
Collections.sort(list);
System.out.println(list); // 输出: [apple, banana, cherry]
// 定制排序(降序)
Collections.sort(list, (s1, s2) -> s2.compareTo(s1));
System.out.println(list); // 输出: [cherry, banana, apple]
2. 查找操作
binarySearch(List<? extends Comparable<? super T>> list, T key)
:在已排序的List
中使用二分查找法查找元素。binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
:在已排序的List
中使用二分查找法查找元素(传入Comparator
对象)。
示例:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
// 二分查找
int index = Collections.binarySearch(list, 3);
System.out.println(index); // 输出: 2
3. 反转操作
reverse(List<?> list)
:反转List
集合中的元素顺序。
示例:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Collections.reverse(list);
System.out.println(list); // 输出: [cherry, banana, apple]
4. 随机打乱操作
shuffle(List<?> list)
:随机打乱List
集合中的元素顺序。
示例:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Collections.shuffle(list);
System.out.println(list); // 输出: 随机顺序,如 [banana, cherry, apple]
5. 填充操作
fill(List<? super T> list, T obj)
:用指定元素填充List
集合。
示例:
List<String> list = new ArrayList<>(Arrays.asList("apple", "banana", "cherry"));
Collections.fill(list, "fruit");
System.out.println(list); // 输出: [fruit, fruit, fruit]
6. 复制操作
copy(List<? super T> dest, List<? extends T> src)
:将源List
集合中的元素复制到目标List
集合中。
示例:
List<String> src = Arrays.asList("apple", "banana", "cherry");
List<String> dest = new ArrayList<>(Arrays.asList("1", "2", "3"));
Collections.copy(dest, src);
System.out.println(dest); // 输出: [apple, banana, cherry]
7. 最大值和最小值
max(Collection<? extends T> coll)
:返回集合中的最大元素(自然排序)。max(Collection<? extends T> coll, Comparator<? super T> comp)
:返回集合中的最大元素(传入Comparator
对象)。min(Collection<? extends T> coll)
:返回集合中的最小元素(自然排序)。min(Collection<? extends T> coll, Comparator<? super T> comp)
:返回集合中的最小元素(传入Comparator
对象)。
示例:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int max = Collections.max(list);
int min = Collections.min(list);
System.out.println("Max: " + max + ", Min: " + min); // 输出: Max: 5, Min: 1
8. 替换操作
replaceAll(List<T> list, T oldVal, T newVal)
:将List
集合中的所有旧值替换为新值。
示例:
List<String> list = new ArrayList<>(Arrays.asList("apple", "banana", "apple"));
Collections.replaceAll(list, "apple", "fruit");
System.out.println(list); // 输出: [fruit, banana, fruit]
9. 同步集合
synchronizedList(List<T> list)
:返回一个线程安全的List
。synchronizedSet(Set<T> s)
:返回一个线程安全的Set
。synchronizedMap(Map<K, V> m)
:返回一个线程安全的Map
。
示例:
List<String> list = new ArrayList<>();
List<String> syncList = Collections.synchronizedList(list);
// 多线程操作
new Thread(() -> syncList.add("apple")).start();
new Thread(() -> syncList.add("banana")).start();
10. 不可变集合
unmodifiableList(List<? extends T> list)
:返回一个不可修改的List
。unmodifiableSet(Set<? extends T> s)
:返回一个不可修改的Set
。unmodifiableMap(Map<? extends K, ? extends V> m)
:返回一个不可修改的Map
。
示例:
List<String> list = new ArrayList<>(Arrays.asList("apple", "banana"));
List<String> unmodifiableList = Collections.unmodifiableList(list);
// 尝试修改会抛出 UnsupportedOperationException
unmodifiableList.add("cherry"); // 抛出异常
总结:
Collections
工具类提供了丰富的静态方法,用于对集合进行排序、查找、反转、填充、复制、替换等操作。掌握这些方法可以大大简化集合操作的代码,并提高开发效率。在实际开发中,根据需求选择合适的方法,可以显著提升代码的可读性和性能。
THE END
暂无评论内容