java集合获取最大值需用collections.max()或stream.max();前者要求非空且元素可比较,后者返回optional并支持链式操作;原始数组需用arrays.stream().max()或工具类。
Java集合本身不提供直接获取最大值的方法,必须借助Collections.max()或流式API;没有自然顺序的元素类型会抛出ClassCastException或UnsupportedOperationException。
用 Collections.max() 查找最大值
这是最常用、最轻量的方式,适用于所有实现了Collection接口且元素可比较的集合(如ArrayList、LinkedList、HashSet等)。
- 要求集合非空,否则抛出
NoSuchElementException - 元素必须实现
Comparable接口(如Integer、String),否则运行时抛出ClassCastException - 支持传入自定义
Comparator,用于处理不可比类型或反向排序
示例:
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5);
int max = Collections.max(numbers); // 返回 5
List<String> words = Arrays.asList("apple", "banana", "cherry");
String longest = Collections.max(words, Comparator.comparing(String::length)); // "banana"
用 Stream.max() 查找最大值
适合需要链式操作、过滤前置条件,或配合并行处理的场景;返回Optional,天然规避空集合问题。
立即学习“Java免费学习笔记(深入)”;