如何正确实现获取Double类型ArrayList最大值的ArrayMax静态方法?
实现Double类型ArrayList最大值获取的两种方案
问题背景
需要实现一个名为ArrayMax的静态方法,要求:
- 输入
ArrayList<Double>,返回其中的最大值 - 若输入列表为空,返回
Double.MIN_VALUE - 方法原型固定:
public static double ArrayMax(ArrayList<Double> array)
现有代码仅完成了空列表判断,需要补充最大值获取逻辑。
方案一:手动遍历实现
通过遍历列表逐个比较元素,手动维护最大值,适合理解底层逻辑:
import java.util.ArrayList; public class YourClass { // 替换为实际类名 public static double ArrayMax(ArrayList<Double> array) { if (array.isEmpty()) { return Double.MIN_VALUE; } // 初始化最大值为列表首个元素 double max = array.get(0); // 从第二个元素开始遍历比较 for (int i = 1; i < array.size(); i++) { double current = array.get(i); if (current > max) { max = current; } } return max; } }
逻辑说明
- 先判断列表是否为空,为空直接返回
Double.MIN_VALUE - 非空时,将第一个元素作为初始最大值
- 遍历列表后续元素,每次将当前元素与最大值比较,若更大则更新最大值
- 遍历完成后返回最终最大值
方案二:利用JDK内置工具类
使用Collections.max()方法简化代码,无需手动遍历:
import java.util.ArrayList; import java.util.Collections; public class YourClass { // 替换为实际类名 public static double ArrayMax(ArrayList<Double> array) { if (array.isEmpty()) { return Double.MIN_VALUE; } // 调用Collections.max获取最大值,自动拆箱为double返回 return Collections.max(array); } }
逻辑说明
- 同样先处理空列表的边界情况
Collections.max()会直接返回集合中的最大元素,对于ArrayList<Double>,返回的Double对象会自动拆箱为double类型- 注意:若列表包含
null元素,此方法会抛出NullPointerException,若需要处理该场景,需额外添加非空判断
内容的提问来源于stack exchange,提问作者imrtl008
相关产品推荐
相关产品推荐

