java中查找数组最大值和最小值的核心是遍历比较:先校验空数组,再以arr[0]初始化max/min,从索引1开始循环更新;避免用固定数值初始化以防全负数或全正数出错。

Java 中查找数组的最大值和最小值,核心思路是遍历数组,逐个比较元素。不需要额外库,用基础循环就能搞定,关键在于初始化和边界处理。
基本方法:遍历比较
最通用的方式是用一个 for 循环,把每个元素和当前记录的 max/min 比较更新。注意初始值不能随便设成 0 或 -1,否则对全负数或全正数数组会出错。
- 最大值初始值设为数组第一个元素(
arr[0]),再从第二个开始遍历比较 - 最小值同理,也从
arr[0]开始,避免假设数值范围 - 空数组要提前判断,否则访问
arr[0]会抛ArrayIndexOutOfBoundsException
代码示例(int 类型一维数组)
下面是一个安全、易读的写法:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
public static void findMaxMin(int[] arr) {
if (arr == null || arr.length == 0) {
System.out.println("数组为空或未初始化");
return;
}
int max = arr[0];
int min = arr[0];
for (int i = 1; i max) max = arr[i];
if (arr[i]
<h3>其他常用方式</h3>
<p>除了手动遍历,也可以借助工具类或 Stream(Java 8+),但要注意适用场景:</p>
-
Arrays.stream(arr).max().orElseThrow():返回 Optional,适合非空数组;空数组需处理异常或默认值 -
Collections.max(Arrays.asList(...)):只适用于包装类型(如Integer[]),不支持基本类型int[] - 多维数组需先扁平化或嵌套遍历,不能直接用上述方法
注意事项
几个容易踩坑的地方:
- 基本类型数组(
int[]、double[])不能直接转成集合,别误用Arrays.asList(arr)—— 它返回的是List<int></int>,不是你想要的元素列表 - 浮点数数组要考虑
NaN,它和任何数比较都为 false,建议用Double.isNaN()单独处理 - 如果只要最大/最小值中的一个,没必要两个都算,节省一次遍历
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










