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

如何设计一个网页自动运行谷歌seo价格

如何设计一个网页自动运行,谷歌seo价格,wordpress组成,wordpress 标签修改Java中用Stream流取出分组后每组中最大值对应的对象 要从分组后的结果中实际取出这些对象&#xff08;而不是Optional包装的对象&#xff09;&#xff0c;有几种常用的方法&#xff1a; 方法1&#xff1a;直接处理Map中的Optional Map<String, Optional<Order>>…

Java中用Stream流取出分组后每组中最大值对应的对象

要从分组后的结果中实际取出这些对象(而不是Optional包装的对象),有几种常用的方法:

方法1:直接处理Map中的Optional

Map<String, Optional<Order>> groupedResult = orders.stream().collect(Collectors.groupingBy(Order::getCustomerId,Collectors.maxBy(Comparator.comparing(Order::getOrderDate))));// 取出所有对象
List<Order> resultObjects = groupedResult.values().stream().filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList());

方法2:使用collectingAndThen去除Optional

Map<String, Order> resultMap = orders.stream().collect(Collectors.groupingBy(Order::getCustomerId,Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(Order::getOrderDate)),opt -> opt.orElse(null))));// 取出所有非null对象
List<Order> resultObjects = resultMap.values().stream().filter(Objects::nonNull).collect(Collectors.toList());

方法3:直接收集到List(Java 12+)

List<Order> resultObjects = orders.stream().collect(Collectors.groupingBy(Order::getCustomerId,Collectors.maxBy(Comparator.comparing(Order::getOrderDate)))).values().stream().flatMap(opt -> opt.map(Stream::of).orElseGet(Stream::empty)).collect(Collectors.toList());

方法4:自定义收集器(更高效)

List<Order> resultObjects = orders.stream().collect(Collectors.collectingAndThen(Collectors.groupingBy(Order::getCustomerId,Collectors.maxBy(Comparator.comparing(Order::getOrderDate))),map -> map.values().stream().filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList())));

完整工作示例

List<Order> orders = Arrays.asList(new Order("C1", LocalDate.of(2023, 1, 10), 100.0),new Order("C1", LocalDate.of(2023, 2, 15), 150.0),new Order("C2", LocalDate.of(2023, 1, 5), 200.0),new Order("C2", LocalDate.of(2023, 3, 20), 250.0),new Order("C3", LocalDate.of(2023, 2, 1), 300.0)
);// 找出每个客户最近的订单并收集到List
List<Order> latestOrders = orders.stream().collect(Collectors.groupingBy(Order::getCustomerId,Collectors.maxBy(Comparator.comparing(Order::getOrderDate)))).values().stream().filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList());// 打印结果
latestOrders.forEach(order -> System.out.println("客户 " + order.getCustomerId() + " 最近的订单日期: " + order.getOrderDate() + " 金额: " + order.getAmount()
));

输出结果示例

客户 C1 最近的订单日期: 2023-02-15 金额: 150.0
客户 C2 最近的订单日期: 2023-03-20 金额: 250.0
客户 C3 最近的订单日期: 2023-02-01 金额: 300.0

关键点总结

  1. groupingBy + maxBy 会产生 Map<K, Optional<T>> 结构
  2. 需要额外处理Optional才能得到实际对象
  3. 推荐使用方法2或方法4,它们在性能和可读性上表现较好
  4. 如果确定每组都有值,可以使用orElseThrow()替代orElse(null)
http://www.dtcms.com/wzjs/15401.html

相关文章:

  • 程序员自己做项目的网站郑州搜狗关键词优化顾问
  • 珠海网站建设制作设计关键词排名优化官网
  • 公众号阅读量1000能挣多少钱seo优化排名服务
  • 网站服务器自己搭建淘宝如何提升关键词排名
  • 绍兴网站开发公司seo推广公司排名
  • 织梦电子行业网站模板网站点击排名优化
  • 做的好的排版网站关键词排名快速提升
  • 网站怎么做导航百度客户端电脑版下载
  • 用阿里巴巴做公司网站怎么样百度推广时间段在哪里设置
  • 公司装修员工有工资吗前端seo搜索引擎优化
  • 上海软件开发的公司排名seo网站排名优化工具
  • 网站建设完成后怎么上传服务器网站推广关键词排名优化
  • 公司建设网站需要什么武汉seo公司
  • 移动互联网开发考研方向seo手机关键词排行推广
  • 百度知识营销百度seo价格查询
  • 网站建设仟首先金手指12精品成品网站入口
  • 怀仁有做网站的公司吗千锋教育介绍
  • 免费网站建设开发网络营销策划方案的目的
  • 为什么做网站要服务器 和域名seo是什么工作
  • 专做logo网站叫什么地方子域名大全查询
  • 网络推广工作好干吗专业seo网络营销公司
  • 下载大连建设网官方网站百度推广官网
  • 免费网站软件app如何在百度上建立网站
  • 中纪委网站两学一做征文百度安全中心
  • 上海市住房和城乡建设部网站电脑培训班价目表
  • 做网站排行个人博客网页设计
  • 宁夏商擎网站建设晋中网络推广
  • 绞铜机 东莞网站建设seo优化收费
  • 百度网盘资源搜索入口杭州seo代理公司
  • 郑州企业建设网站有什么用关键词优化怎么优化