通过合并对象或聚合对java java8流进行分组
我有以下情况,两个邻居的目标和同一条街,但不同的房子
我想知道如何使用流,我可以分组成一个社区对象
总之,我有以下数据
Neighborhood: n11
streets: s11
houses: h1
Neighborhood: n11
streets: s11
houses: h2
我想把它合并显示如下
Neighborhood: n11
streets: s11
houses: h1,h2
代码如下
public class Neighborhood{
public UUID id;
public List<Street> streets;
public Neighborhood(UUID id, List<Street> streets)
{
this.id=id;
this.streets=streets;
}
}
public class Streets
{
public UUID id;
public List<House> houses;
public Streets(UUID id, List<House> houses)
{
this.id=id;
this.houses=houses
}
}
public class House
{
public UUID id;
public House(id)
{
this.id=id;
}
}
House h1= new House("h11")
Street s1= new Street("s11", asList(h1))
Neighborhood n1 = new Neighborhood("n11", asList(s1));
House h2= new House("h12")
Street s2= new Street("s11", asList(h2))
Neighborhood n2 = new Neighborhood("n11", asList(s2));
# 1 楼答案
你可以构建一个
Map<String, Map<String, List<String>>>
,其中key是Neighborhood::id
,value是一个Map
,key是Street::id
,value是House::id
的列表。从现在开始,你想做什么就做什么