与流API分组时在多个组单个元件

user902383:

我回顾了一些旧的代码,在那里我将这些元素分组。它看起来或多或少是这样的:

Map<Long,List<Items>> groupedItems = ...
for (long groupid : groups){
    for (Item item :items){
        if (isGroupAccepting(item.getId(),groupid) || groupid == item.getGroup()) {
            groupedItems.get(groupid).add(item);
        }
    }
}

我准备用从流API分组来取代它,但我坚持。它工作正常,我的第二个条件,但如何处理的第一个,在项目应该被添加到每一个它接受那种项目组?它实际上是可能的,还是我在这里打一场失败的事业?

他们是:

您可以创建对所有的有效组ID和项目,然后按组ID组他们:

Map<Long,List<Item>> groupedItems =
    groups.stream()
          .flatMap(g -> items.stream()
                             .filter(i -> isGroupAccepting(i.getId(),g) || g == i.getGroup())
                             .map(i -> new SimpleEnty<>(g,i))
          .collect(Collectors.groupingBy(Map.Entry::getKey,
                   Collectors.mapping(Map.Entry::getValue,
                                      Collectors.toList())));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章