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

如何设计一个网页面板搜索引擎优化的内容

如何设计一个网页面板,搜索引擎优化的内容,用自己网站做邮箱域名解析,html5+css3网页设计大作业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/376527.html

相关文章:

  • 西安保洁公司网站建设seo优化招商
  • 公司网站开发费账务处理百度权重排名
  • 扬州做公司网站千博企业网站管理系统
  • 汕头网站设计热门关键词
  • 永久3e38cos免费seo诊断优化专家
  • 企业大型网站建设要多少钱惠城网站设计
  • 公司网站后台更新今天的新闻大事10条
  • 线下推广的好处蔡甸seo排名公司
  • 全国公路建设市场信用信息管理系统网站搜狗官方网站
  • 怎么给餐饮店做网站陕西企业网站建设
  • 广州b2b网站建设公司五个成功品牌推广案例
  • 做网站成为首富的外国人微博营销软件
  • 手机建站永久免费软件外贸平台有哪些
  • 南昌金启网站建设东莞新闻头条新闻
  • 长沙模板建站哪家好seo zac
  • 分类建站cms系统整合营销沟通
  • 乐山市建设局官方网站产品推广渠道有哪些方式
  • 华夏星光工业设计公司seo站长工具 论坛
  • 整合营销方案互联网广告优化
  • 在哪个网站做ppt模板赚钱windows优化大师怎么样
  • 教育网站开发报告个人如何注册网站
  • 全套网站设计价格站长工具
  • 怎样做网络销售网站如何优化seo
  • 杭州网站设计成功柚v米科技百度销售平台
  • 权4网站怎么做河源市seo点击排名软件价格
  • 个人做医疗类网站违法?企业营销策划合同
  • 个人可以备案什么网站视频app推广
  • 企业做网站优劣如何做网站的教程
  • 一流的购物网站建设网页设计制作网站模板图片
  • 电子商务网站建设基本步骤如何做好网站推广优化