小编s-h*_*ins的帖子

Java使用"set"进行分组和映射,但如果所有值都为"null",则需要一个空集

在我的Java 11应用程序中,我想从存储库获取产品更新.一个产品更新有一个updateIdproductIds要更新的列表.

  • 如果没有应该更新的产品编号以进行更新updateId = X,我仍然希望写入另一个我已处理更新的表X; updateStatusRepository.setStatusProcessing(updateId)并且updateStatusRepository.setStatusProcessed(updateId)应该仍然需要这个updateId.

  • 如果存在产品更新,则应在中进行处理ProductProcessingService.

现在,groupingBymapping给我一个带有null条目而不是空集的Set,这就是我之后删除所有null产品ID的原因.

List<ProductUpdate> productUpdateList = updateStatusRepository.getProductUpdates();
Map<String, Set<String>> productUpdateMap = productUpdateList
          .stream()
          .collect(
              Collectors.groupingBy(
                  ProductUpdate::getUpdateId,
                  Collectors.mapping(ProductUpdate::getProductNo, Collectors.toSet())));

productUpdateMap.forEach(
          (updateId, productIds) -> {
        try {
          updateStatusRepository.setStatusProcessing(updateId);
          productIds.remove(null);
          if(!productIds.isEmpty()) {
            productProcessingService.performProcessing(Lists.newArrayList(productIds));
          }
          updateStatusRepository.setStatusProcessed(updateId);
        } catch (Exception e) {
              //
        }
});
Run Code Online (Sandbox Code Playgroud)

我更喜欢是否可以以mapping这样的方式使用它,如果所有值都是直接传递空集null.

有没有办法优雅地做到这一点?

java java-stream collectors

6
推荐指数
1
解决办法
181
查看次数

如何摆脱屏幕右侧的通知圈?

我在网上看了但是找不到任何东西:

如何摆脱正在观看的电影上显示的通知圈? 在此输入图像描述

amazon-fire-tv

3
推荐指数
1
解决办法
14万
查看次数

标签 统计

amazon-fire-tv ×1

collectors ×1

java ×1

java-stream ×1