2 回答
TA贡献1877条经验 获得超6个赞
您可以创建所有有效组 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())));
TA贡献1813条经验 获得超2个赞
如果您使用的是 Idk 9 或更高版本,请尝试以下操作:Collectors.flatMapping
// import static java.util.stream.Collectors.*;
Map<Long, List<Item>> groupedItems = groups.stream()
.collect(groupingBy(Function.identity(),
flatMapping(
groupId -> items.stream()
.filter(item -> isGroupAccepting(item.getId(), groupId) || groupId == item.getGroup()),
toList())));
不确定为什么要尝试用 lambdas/流 API 替换循环。对我来说,代码看起来很棒。大多数时候,lambdas 代码看起来很丑陋,更难理解。forfor
添加回答
举报