Java数组求最大值需先判空,再用for循环遍历比较或Arrays.stream().max()函数式方法;基本类型可直接比较,对象数组需实现Comparable或传Comparator。

Java数组求最大值,核心是遍历所有元素并逐个比较。关键在于初始化一个足够小的起始值(比如数组第一个元素),再用循环更新它。
基础方法:for循环遍历
适用于所有基本类型数组(int、double等)和对象数组(需重写compareTo或提供Comparator)。
- 先判断数组是否为空或null,避免运行时异常
- 用数组第一个元素初始化max变量
- 从第二个元素开始遍历,遇到更大的就更新max
示例(int数组):
int[] arr = {3, 7, 2, 9, 1};
if (arr == null || arr.length == 0) {
throw new IllegalArgumentException("数组不能为空");
}
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
System.out.println("最大值:" + max); // 输出:9
使用Arrays.stream(Java 8+)
适合简洁编码,支持基本类型和引用类型(配合Comparator)。
立即学习“Java免费学习笔记(深入)”;
- int[] 需用IntStream,调用max()返回OptionalInt
- 注意处理空数组情况——max()返回空Optional,要调用orElse或orElseThrow
示例:
int[] arr = {3, 7, 2, 9, 1};
int max = Arrays.stream(arr).max().orElseThrow();
System.out.println("最大值:" + max);
处理对象数组(如String、自定义类)
不能直接比大小,需明确“最大”的含义(字典序?某个字段值?)。
- String数组默认按字典序,可用Collections.max(Arrays.asList(arr))
- 自定义类需实现Comparable接口,或传入Comparator
- 也可用stream().max(Comparator.comparing(...))
示例(String数组):
String[] words = {"apple", "zebra", "banana"};
String maxWord = Arrays.stream(words).max(String::compareTo).orElse("");
System.out.println("字典序最大:" + maxWord); // zebra
基本上就这些。手动循环最可控,stream更函数式且简洁,选哪种取决于Java版本和代码风格偏好。











