分批处理 Stream

2018-05-31  本文已影响0人  bigfish1129
  1. Lists.partition(billDetailDOList, 500);

  2. Stream to list

List<QueryDO> queries = PageResult
                    .getData()
                    .stream()
                    .map(s -> {
                        ueryDO query = new QueryDO();
                        query.setcode(s.getcode());
                        return query;
                    }).collect(Collectors.toList());
List<Long> IdList = PageResult.getData().stream()
                    .map(ds -> Long.parseLong(ds.getId())).collect(Collectors.toList());
  1. stream().forEach
Service.listByIds(queries).stream().forEach(element -> {
                    Map.put(element.getId() + ":" + element.getSId(), element);
                });
  1. Stream to map
Map<String, DO> GroupById = Service.listByIds(itemQueryDOs)
                .stream().collect(Collectors.toMap(g -> g.getId(), g -> g));
  1. 分组求和 summingInt
   Map<String, Integer> Map = list
            .stream()
            .filter(t -> t.getNum() != null && t.getNum() > 0) 
            // 按ID分组求和
            .collect(groupingBy(DO::getId,
                summingInt(DO::getNum)));
  1. 合并所有的商品子List
List<DetailDO> newItems = OrdersDOList.stream()
                    .flatMap(a -> a.getDetailDOs().stream()).collect(Collectors.toList());
  1. //计算每种商品的数量和
    Map<Long, Long> newItemsNumSum = new HashMap<>();
            if (CollectionUtils.isNotEmpty(newItems)) {
                newItemsNumSum = newItems
                        .stream()
                        .collect(
                                Collectors.groupingBy(DetailDO::getItemId,
                                        Collectors.summarizingLong(DetailDO::getNum))).entrySet()
                        .stream().map(entry -> ImmutablePair.of(entry.getKey(), entry.getValue().getSum()))
                        .collect(Collectors.toMap(Pair::getLeft, Pair::getRight));
            }
上一篇 下一篇

猜你喜欢

热点阅读