登录
首页 >  文章 >  java教程

Java实现小型购物管理工具:集合与对象应用详解

时间:2026-01-23 22:46:35 198浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《Java开发小型购物管理工具:集合与对象应用解析》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

用ArrayList比数组更灵活,支持动态扩容和便捷增删查;配合HashMap可实现O(1)查询;删除商品需先检查订单依赖,再同步更新集合。

在Java中如何开发小型购物管理工具_Java集合与对象解析

ArrayList 存商品对象比用数组更灵活

硬编码商品信息或用 String[] 存名称价格,很快会卡在增删改查上。直接用 ArrayList,能动态扩容、支持 remove()stream().filter() 查找。
关键点是定义好 Product 类:至少含 idintString)、namepricestock 字段,并重写 toString() 方便打印调试。

遍历商品时别用传统 for 循环索引访问

除非真需要下标,否则优先用增强 for 或 forEach——代码简洁且不易越界。若要按条件修改(比如库存减 1),注意 ArrayListget(i) 返回的是引用,直接调 product.setStock(newStock) 就生效;但若用 stream().map() 后没收集回集合,原列表不会变。

products.forEach(p -> {
    if (p.getId().equals("P001")) {
        p.setStock(p.getStock() - 1); // ✅ 直接改原对象
    }
});

HashMap 比线性查找快得多

当用户输入商品 ID 查详情,用 ArrayList 遍历匹配是 O(n),1000 个商品平均查 500 次;换成 HashMap,ID 作 key,查就是 O(1)。注意 key 别用可变字段(如未重写 equals/hashCode 的对象),字符串 ID 最稳妥。

  • 初始化:Map productMap = new HashMap<>();
  • 存:productMap.put(product.getId(), product);
  • 取:Product p = productMap.get("P002");(返回 null 表示不存在)

删除商品后记得同步更新库存和订单关联

单纯从 ArrayListHashMap 中移除 Product 对象,不代表已清空所有引用。如果还有 Order 类里存着该商品的引用,后续打印订单可能抛 NullPointerException 或显示“已下架”。实际做法是:

  • 先检查是否有未完成订单引用该商品(遍历 orderList 中每个 Order.items
  • 若有,提示“无法删除:存在未完成订单”,或自动将对应项标记为 status = "CANCELLED"
  • 确认安全后,再执行 productMap.remove(id)products.removeIf(p -> p.getId().equals(id))

对象生命周期管理不是集合自己负责的,得靠你主动理清依赖关系。

以上就是《Java实现小型购物管理工具:集合与对象应用详解》的详细内容,更多关于的资料请关注golang学习网公众号!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>