假设我有下一个类结构:
@Getter
@Setter
public class Section {
private Long id;
private Set<Grid> grids;
}
@Getter
@Setter
public class Grid {
private Long id;
private Set<Row> rows;
}
@Getter
@Setter
public class Row {
private Long id;
private String email;
}
我有一组东西:
Set<Section> sections;
假设这一节在下一个结构中将值设置为json:
[
{
"id": 1,
"grids": [
{
"id": 10,
"rows" [
{
"id": 50,
"email": "email1@test.com"
},
{
"id": 51,
"email": "email2@test.com"
}
]
}
]
},
{
"id": 2,
"grids": [
{
"id": 11,
"rows" [
{
"id": 60,
"email": "email1@test.com"
}
]
}
]
}
]
假设我有多个部分,这些部分有多个网格,每个网格有多行,每行的email属性可以存在于不同的网格中。
现在我需要将这个集合转换为java.util.map<string,set>,这个Map表示行对象email作为一个键,一组节id作为该Map键的值。所以我需要像map<email,set<section1id,section2id,等等…>>这样的结果,在json中(这只是为了澄清这个想法):
[
{
"key": "email1@test.com",
"value": [1, 2] // Section ids
},
{
"key": "email2@test.com",
"value": [1] // Section ids
}
]
OR like that (whatever)
[
"email1@test.com": {1, 2},
"email2@test.com": {1}
]
如何使用Java8流媒体实现这一点?
4条答案
按热度按时间utugiqy61#
尝试以下操作:
wljmcqd82#
如果您使用的是java 9或更高版本,您可以用一种非常简洁的方式完成,而不需要第三方库:
laik7k3q3#
不是流媒体。它可以通过一个简单的foreach实现:
ugmeyewa4#
这里有两个步骤来获得所需的输出格式。看看它是否适合你的用例
结果