如何在PurchaseOrder类中实现查找ArrayList中最贵商品的方法
Java PurchaseOrder类findMostExpensiveProduct方法实现方案
现有方法存在的问题
- 返回值类型不符合需求:需求要求返回最贵的商品对象,你当前定义的返回值为
double(仅返回价格) - 入参多余:方法无需外部传入商品列表,直接读取PurchaseOrder类的成员变量
products即可
修正后的实现代码
直接替换你现有未完成的方法即可:
// 修正方法签名:返回Product类型,无入参 public Product findMostExpensiveProduct() { // 处理空列表边界情况,避免空指针异常 if (products == null || products.isEmpty()) { return null; // 如果业务要求空列表需报错,可替换为下方抛出异常的代码 // throw new IllegalStateException("商品列表为空,无法查找最贵商品"); } Product mostExpensive = products.get(0); for (Product product : products) { // 逐个比对价格,价格更高则更新最贵商品记录 if (product.getPrice() > mostExpensive.getPrice()) { mostExpensive = product; } } return mostExpensive; }
逻辑说明
- 边界校验优先:提前处理商品列表为空的场景,避免运行时空指针报错
- 遍历逻辑:默认取第一个商品为初始最贵商品,遍历全量商品逐个比对,价格更高就替换记录
- 多同价最贵商品的场景下,默认返回列表中第一个出现的最高价格商品
内容的提问来源于stack exchange,提问作者is89r
相关产品推荐
相关产品推荐

