Collections.max和min用于获取集合极值,支持默认排序和自定义Comparator;使用时需确保集合非空且元素可比较,避免NullPointerException和NoSuchElementException。

在Java中,Collections.max 和 Collections.min 是操作集合时非常实用的工具方法,用于快速获取集合中的最大值和最小值。它们定义在 java.util.Collections 类中,适用于所有实现了 Collection 接口的类,如 ArrayList、LinkedList、HashSet 等。
基本用法:获取默认排序下的极值
当集合中的元素是实现了 Comparable 接口的类型(如 Integer、String、Double 等),可直接调用 Collections.max 与 min 方法。
示例代码:
ListInteger maxValue = Collections.max(numbers); // 返回 9
Integer minValue = Collections.min(numbers); // 返回 1
System.out.println("最大值:" + maxValue);
System.out.println("最小值:" + minValue);
自定义比较规则:使用 Comparator
若想根据特定规则比较元素,比如忽略大小写比较字符串,或按对象某个字段排序,可以传入一个 Comparator 实现。
立即学习“Java免费学习笔记(深入)”;
示例:找出最长的字符串
ListString longest = Collections.max(words, (a, b) -> a.length() - b.length());
String shortest = Collections.min(words, (a, b) -> a.length() - b.length());
System.out.println("最长字符串:" + longest); // banana
System.out.println("最短字符串:" + shortest); // hi
注意事项与常见问题
使用这两个方法时需注意以下几点,避免运行时异常:
- 集合不能为 null,否则抛出 NullPointerException
- 集合不能为空(size == 0),否则抛出 NoSuchElementException
- 元素必须能被比较,若存在 null 元素且未提供 Comparator,可能抛出 NullPointerException
- 自定义对象需确保 Comparator 能处理所有情况,包括相等和边界值
建议在调用前做空值检查:
if (numbers != null && !numbers.isEmpty()) {Integer max = Collections.max(numbers);
}
基本上就这些。只要集合元素可比较,无论是默认顺序还是自定义逻辑,Collections 提供的方法都能简洁高效地获取极值。关键是理解 Comparable 与 Comparator 的作用,并做好基础校验。










