当前位置: 首页 > news >正文

题⽬ 4:订单商品统计:

核⼼考点对象聚合订单包含商品列表、 MapString, ListOrder 、销量 / 营业额 统计、Stream ⾼阶⽤法题⽬要求 1. Item 商品名称、单价、数量 → 提供⼩计⾦额⽅法 2. Order 订单订单号、⽤户 ID、商品列表 ListItem → 提供订单总⾦额⽅法 3. 按⽤户 ID分组订单Map⽤户→订单列表 4. 统计每个⽤户总消费、平台总营业额、销量最⾼的商品。打印结果: ⽤户消费统计 ⽤户U002 总消费3999.00元 ⽤户U001 总消费7096.00元 平台总营业额11095.00元 销量最⾼商品⼿机总销量2思路分析一、Item 类 商品class Item { private String name; // 商品名手机、电脑 private double price; // 单价 private int count; // 购买数量 // 小计金额 单价 × 数量题目要求必须提供的方法 public double getSubtotal() { return price * count; } // 构造方法创建商品时传入 名称、单价、数量 public Item(String name, double price, int count) { this.name name; this.price price; this.count count; } // getter外部要读取商品信息必须用get public String getName() { return name; } public int getCount() { return count; } }核心思路tem 是基础数据单元只负责自己的单价、数量、小计。getSubtotal()是题目强制要求单个商品的总价。提供 getter让外部类Order能读取商品名称、数量。二、Order 类订单class Order { private String orderId; // 订单编号 O001 private String userId; // 用户编号 U001 private ListItem itemList; // 一个订单包含多个商品 → 对象聚合 // 订单总金额 所有商品的小计加起来题目要求 public double getTotalAmount() { return itemList.stream() .mapToDouble(Item::getSubtotal) // 把每个商品转成小计金额 .sum(); // 求和 } // 构造方法创建订单时传入 订单号、用户ID、商品列表 public Order(String orderId, String userId, ListItem itemList) { this.orderId orderId; this.userId userId; this.itemList itemList; } // getter public String getUserId() { return userId; } public ListItem getItemList() { return itemList; } }核心思路对象聚合核心考点一个订单 包含 多个商品代码体现ListItem itemListgetTotalAmount() 订单总金额流处理商品列表mapToDouble(Item::getSubtotal)把每个商品 → 金额sum()把所有金额加起来 订单总价三、主程序完整执行流程最关键第 1 步构造测试数据// 商品 Item phone new Item(手机, 1999, 1); Item phone2 new Item(手机, 1999, 1); Item computer new Item(电脑, 5099, 1); Item earphone new Item(耳机, 1999, 1); // 订单 Order o1 new Order(O001, U001, Arrays.asList(phone, computer)); Order o2 new Order(O002, U001, Arrays.asList(earphone)); Order o3 new Order(O003, U002, Arrays.asList(phone2)); // 所有订单放到一个集合里 ListOrder orderList Arrays.asList(o1, o2, o3);思路先造商品再造订单订单里装入商品最后把所有订单放到orderList方便统一处理第 2 步按用户 ID 分组订单MapString, ListOrderMapString, ListOrder userOrderMap orderList.stream() .collect(Collectors.groupingBy(Order::getUserId));思路Stream 分组核心groupingBy(Order::getUserId)按照userId分组key 用户 IDvalue 这个用户的所有订单列表第 3 步统计每个用户总消费userOrderMap.forEach((userId, orders) - { double total orders.stream() .mapToDouble(Order::getTotalAmount) // 每个订单 → 金额 .sum(); // 求和 该用户总消费 System.out.printf(用户%s 总消费%.2f元%n, userId, total); });思路遍历每个用户把该用户的所有订单金额加起来输出格式化结果第 4 步统计平台总营业额double platformTotal orderList.stream() .mapToDouble(Order::getTotalAmount) .sum(); System.out.printf(平台总营业额%.2f元%n, platformTotal);思路把所有订单的金额加起来就是平台总营业额最简单的统计第 5 步统计销量最高的商品最难Stream 高阶第一步把所有订单里的商品全部展开orderList.stream() .flatMap(order - order.getItemList().stream())思路flatMap 扁平化把订单1[商品1,商品2]、订单2[商品3]变成[商品1,商品2,商品3]第二步按商品名统计总销量.collect(Collectors.groupingBy( Item::getName, // 按商品名分组 Collectors.summingInt(Item::getCount) // 每组数量求和 ));得到一个 Map手机 → 2电脑 → 1耳机 → 1第三步找出销量最大的那个Map.EntryString, Integer topItem itemSalesMap.entrySet().stream() .max(Map.Entry.comparingByValue()) // 按销量值比较取最大 .orElse(null);思路比较 Map 里的 value销量取出最大的那一组最后打印商品名 销量
http://www.zskr.cn/news/1399389.html

相关文章:

  • C51编译器内联函数机制与优化实践
  • 抛弃传统的 RNN!为什么时间卷积网络(TCN)才是时序数据预测的真正利器?
  • AI游戏开发制作平台深度评测:12款工具如何选,独立开发者必看避坑指南
  • C51开发中LROL与LROR函数的非内联实现解析
  • 脉冲神经网络剪枝技术:SPEAR框架的创新与实践
  • 基于VoIPBin Flows与AI服务构建智能语音交互系统
  • MCP数据库连接器:架构、选型与实战指南
  • 英伟达Vera CPU正式交付:单核性能提升50%,Anthropic和OpenAI已率先部署
  • 基于Gemini与Antigravity框架构建AI驱动的智能命令行工具
  • 手把手教你用VNC Viewer远程显示树莓派桌面(附免费软件和SSH+VNC完整配置流程)
  • 2026年知名的贵州室外耐晒磁漆/贵州地坪漆品牌厂家推荐 - 行业平台推荐
  • 基于PLC的高科技房屋安防控制系统(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)_文章底部可以扫码
  • 2026年知名的高效电机/异步电机/防爆电机长期合作厂家推荐 - 品牌宣传支持者
  • 2026年北京会展沙发桌椅租赁/庆典沙发桌椅租赁优质公司推荐 - 品牌宣传支持者
  • 2026年质量好的围墙护栏/草坪护栏多家厂家对比分析 - 品牌宣传支持者
  • AI辅助开发实战:一小时构建完整Web应用
  • 2026年评价高的护栏/厂区护栏/九江桥梁护栏推荐品牌厂家 - 品牌宣传支持者
  • 2026年热门的变频电机/三相电机/YE3高效电机高口碑品牌推荐 - 品牌宣传支持者
  • 大一C语言程序设计期末复习指南
  • AI编程时代密钥安全:从硬编码到环境变量与自动化检测
  • 从A2A到控制平面:构建生产级多智能体系统的架构演进
  • 用Python手把手复现2013年的狼群算法(WPA),搞定你的第一个智能优化项目
  • MCP框架与Playwright/Puppeteer CLI浏览器自动化实战性能对比
  • AI智能体工作流构建实战:从状态机设计到工程实现
  • 基于大语言模型的自然语言转数据库Schema系统设计与实现
  • RAG检索结果不够准?揭秘“双塔+单塔“组合背后的精准秘诀!秒懂工业级RAG架构核心!
  • 基于AssemblyAI与Groq构建语音控制AI智能体:从原理到实践
  • 2026年附近代理记账财税咨询/嘉兴代理记账报税/嘉兴公司注册代理记账精选推荐 - 品牌宣传支持者
  • LangChain生态:框架、运行时与驾驭框架如何协同工作?
  • 英伟达收购SchedMD:AI调度器Slurm控制权转移的技术影响与应对策略