gpt4 book ai didi

java - 使用 Java 8 将一个值列表与另一个值列表映射

转载 作者:太空宇宙 更新时间:2023-11-04 12:06:18 25 4
gpt4 key购买 nike

我不久前才开始编程,我需要你的帮助。我有一个Object1列表,一个Object1由Item1、Item2、Item3组成。

我想按 Item2 分组,将每个 Item2 映射到 Object1 列表,然后我想将每个 Object1 列表与 Item3 列表进行映射,最后我想计算每个 Item3 列表中不同 Item3 的数量。

简单地说,我想计算 Object1 列表中每个 Item2 拥有的 Item3 的数量。

为此,这是我迄今为止所做的:

Map<Item2, List<Object1>> object1GroupedByItem2 = object1List.stream().collect(Collectors.groupingBy(object1->object1.getItem2()));

List<Entry<Item2, List<Object1>>> object1GroupedByItem2List = object1GroupedByItem2.entrySet().stream().collect(Collectors.toList());

Map<Item2, List<Item3>> item3GroupedByItem2 = object1GroupedByItem2List.stream().collect(Collectors.toMap(entry->entry.getKey(),entry->entry.getValue().stream().map(object1->object1.getItem3()).collect(Collectors.toList())));

List<Entry<Item2, List<Item3>>> item3GroupedByItem2List = item3GroupedByItem2.entrySet().stream().collect(Collectors.toList());

Map<Item2, List<Item3>> distinctItem3GroupedByItem2 = item3GroupedByItem2List.stream().collect(Collectors.toMap(entry->entry.getKey(),entry->entry.getValue().stream().distinct().collect(Collectors.toList())));

List<Entry<Item2, List<Item3>>> distinctItem3GroupedByItem2List = distinctItem3GroupedByItem2.entrySet().stream().collect(Collectors.toList());

Map<Item2, Long> nbItem3PerItem2 = distinctItem3GroupedByItem2List.stream().collect(Collectors.toMap(entry->entry.getKey(),entry->entry.getValue().stream().count());

我几乎可以肯定,一定有更好的方法来做同样的事情,但我不知道如何......你能帮我吗?

提前致谢

编辑:

public class Object1 {

private Item1 item1;
private Item2 item2;
private Item3 item3;

public Object1(Item1 item1, Item2 item2, Item3 item3) {
this.item1 = item1;
this.item2 = item2;
this.item3 = item3;
}

public Item1 getItem1() {
return item1;
}

public void setItem1(Item1 item1) {
this.item1 = item1;
}

public Item2 getItem2() {
return item2;
}

public void setItem2(Item2 item2) {
this.item2 = item2;
}

public Item3 getItem3() {
return item3;
}

public void setItem3(Item3 item3) {
this.item3 = item3;
}
}

Item1、Item2 和 Item3 仅包装一个字符串。

至于条目列表,我怎样才能摆脱它们?我不需要他们来制作我的 map 吗?

最佳答案

这是我的问题的答案:

Map<Item2, List<Object1>> object1GroupedByItem2 = object1List.stream().collect(Collectors.groupingBy(object1->object1.getItem2()));

Map<Item2, Long> nbItem3PerItem2 = object1GroupedByItem2.entrySet().stream().collect(Collectors.toMap(entry->entry.getKey(), entry->entry.getValue().stream().map(object1->object.getItem3()).distinct().count()));

关于java - 使用 Java 8 将一个值列表与另一个值列表映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332484/

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