日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 java綜合 正文

java使用stream()中的reducing實現將名字相同的累加(合并)點餐數量的,早餐,午餐,晚餐(分組計算)

作者:小徐敲java 更新時間: 2024-04-05 java綜合

java使用stream()中的reducing實現將名字相同的累加(合并)點餐數量的,早餐,午餐,晚餐

		//	方法一
		Map<String, PersonFamilyFoodOrderDTO> mergedOrders = personFamilyFoodOrderDTOList.stream()
                .collect(Collectors.groupingBy(PersonFamilyFoodOrderDTO::getUserName, Collectors.reducing(SysFoodOrderController::mergeOrder)))
                .entrySet()
                .stream()
                .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().orElse(null)));
        List<PersonFamilyFoodOrderDTO> collect = mergedOrders.values().stream()
                .collect(Collectors.toList());
                
        //	方法二
        List<Optional<PersonFamilyFoodOrderDTO>> collect1 = personFamilyFoodOrderDTOList.stream()
                .collect(Collectors.groupingBy(PersonFamilyFoodOrderDTO::getUserName,
                        Collectors.reducing(SysFoodOrderController::mergeOrder)))
                .values().stream().collect(Collectors.toList());


		private static PersonFamilyFoodOrderDTO mergeOrder(PersonFamilyFoodOrderDTO o1, PersonFamilyFoodOrderDTO o2) {
        return new PersonFamilyFoodOrderDTO(o1.getUserName(),
                o1.getBreakfast() + o2.getBreakfast(),
                o1.getLunch() + o2.getLunch(),
                o1.getDinner() + o2.getDinner(),
                o1.getFamilyBreakfast() + o2.getFamilyBreakfast(),
                o1.getFamilyLunch() + o2.getFamilyLunch(),
                o1.getFamilyDinner() + o2.getFamilyDinner()
                );
    }

通過分組foodMenuDate,foodMenuType來統計OrderNumber總數

Map<String, Integer> sums = sysFoodOrderList.stream()
               .collect(Collectors.groupingBy(p -> p.getFoodMenuDate() + "-" + p.getFoodMenuType()
               ,Collectors.summingInt(SysFoodOrder::getOrderNumber)));

原文鏈接:https://blog.csdn.net/qq_19891197/article/details/132231690

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新