【发布时间】:2017-06-01 15:08:46
【问题描述】:
在 Java8 中有什么方法可以使用 Streams API 来加入两个地图列表吗? 假设我有:
列表 #1
[
{
id=1, attr1='a', attr2='b'
},
{
id=2, attr1='c', attr2='d'
},
{
id=3, attr1='e', attr2='f'
}
]
列表 #2
[
{
id=1, attr3='x', attr4='y'
},
{
id=2, attr3='x', attr4='z'
},
{
id=3, attr3='z', attr4='y'
}
]
现在我想通过键 ID 加入这两个列表(只需列出一个 SQL 连接), 输出将是:
[
{
id=1, attr1='a', attr2='b', attr3='x', attr4='y'
},
{
id=2, attr1='c', attr2='d', attr3='x', attr4='z'
},
{
id=3, attr1='e', attr2='f', attr3='z', attr4='y'
}
]
非常感谢!
【问题讨论】:
-
你尝试了什么?这不是代码编写服务。
-
这看起来很像 Javascript,尽管它可能只是伪代码。 :) 然而,在实际的 Java 代码中,地图会是什么样子?我假设
id是关键,但第一个列表中的attrib1和attrib2是什么?值对象的属性?嵌套集合中的元素? -
您可以在 java 8 中进行集合连接。请参阅this。尝试解决您的问题。
-
@Thomas 抱歉,我没说这个结构代表 Maps 的列表,id、attr1、attr2、attr3 和 attr4 是键。
-
这是否意味着您的地图的键类型是
String?值类型,是Integer、Character、Object还是什么?此外,保存具有相同id值(在您的示例中为 1、2 和 3)的地图是否需要列表?如果其中一个列表中有一张“额外”的地图怎么办?它们的顺序相同吗?
标签: java dictionary join merge java-stream