gpt4 book ai didi

JAVA8 - 使用 lambda 进行分组

转载 作者:搜寻专家 更新时间:2023-11-01 01:34:18 25 4
gpt4 key购买 nike

我有一个结构如下的集合:

@Entity
public class RRR{

private Map<XClas, YClas> xySets;

}

XClas有一个名为 ZZZ 的字段

我的问题是:我想将它与 lambda 聚合以获得 Map<ZZZ, List<RRR>> .

这可能吗?现在我坚持:

Map xxx = rrrList.stream().collect(
Collectors.groupingBy(x->x.xySets().entrySet().stream().collect(
Collectors.groupingBy(y->y.getKey().getZZZ()))));

但它是Map<Map<ZZZ, List<XClas>>, List<RRR>>所以这不是我要找的:)

现在只是为了让它工作,我用两个嵌套循环进行了聚合,但如果你能帮助我用 lambda 完成它就太好了。

编辑

我按照要求发布了我现在得到的东西。我已经离开了嵌套循环,并且我设法做到了这一点:

Map<ZZZ, List<RRR>> temp;
rrrList.stream().forEach(x -> x.getxySetsAsList().stream().forEach(z -> {
if (temp.containsKey(z.getKey().getZZZ())){
List<RRR> uuu = new LinkedList<>(temp.get(z.getKey().getZZZ()));
uuu.add(x);
temp.put(z.getKey().getZZZ(), uuu);
} else {
temp.put(z.getKey().getZZZ(), Collections.singletonList(x));
}
}));

提前致谢

最佳答案

类似的东西? :

    Map<ZZZ, List<RRR>> map = new HashMap<>();

list.stream().forEach(rrr -> {
rrr.xySets.keySet().stream().forEach(xclas -> {
if (!map.containsKey(xclas.zzz))
map.put(xclas.zzz, new ArrayList<RRR>());
map.get(xclas.zzz).add(rrr);
});
});

关于JAVA8 - 使用 lambda 进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25244181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com