java数组如何计算最大值

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)。

  • 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版本和代码风格偏好。