gpt4 book ai didi

java - 像分组列表一样的 SQL 连接

转载 作者:行者123 更新时间:2023-12-01 18:36:47 25 4
gpt4 key购买 nike

如果表示相同的给定字段相等,我想对几个列表进行分组,并且我想知道是否有办法在 lambda 或流中执行此操作

假设我们有一个包含容器信息的列表

container1-> containerInfo
container2-> containerInfo

然后我们有另一个列表,表示容器中的元素和容器名称

element1 -> container1 + elementInfo
element2 -> container1 + elementInfo
element3 -> container2 + elementInfo
element4 -> container2 + elementInfo

有一种方法可以通过组件连接两个列表,前提是两者都是不同的类,而且我还需要两个列表中的某些信息,最后我想要这样的东西

Map<Integer,List<ContainetElementMap>> map;

例如:

{containerId, {containerName,elements,extraInfo}}
{containerId, {containerName,elements,extraInfo}}

我知道有一个 groupBy 可以提供帮助,但只有当两个对象类型相同时它才起作用,我需要像 sql 在表之间进行联接时那样的东西

最佳答案

尝试这种方法。我使用了 set 而不是 list,其他点你需要从 map 中过滤掉没有元素的值:

Map<Integer, Set<Elem>> m = containers.stream()
.collect(
Collectors.groupingBy(
Container::getId,
Collectors.flatMapping(
container -> elems.stream().filter(elem -> elem.containerId == container.id),
Collectors.toSet())
)
);

这是容器类:

class Container {
Integer id;

public Container(Integer id) {
this.id = id;
}

public Integer getId() {
return id;
}
}

和元素:

class Elem {
Integer id;
Integer containerId;
String name;

public Elem(Integer id, Integer containerId, String name) {
this.id = id;
this.containerId = containerId;
this.name = name;
}
}

关于java - 像分组列表一样的 SQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60021629/

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