Adr*_*ano 2 java java-8 java-stream
我有平面对象POJO:
class FamilyInformation {
String house;
String familyMember;
}
Run Code Online (Sandbox Code Playgroud)
使用这样的数据:
[{
house: "houseName1",
familyMember: "Son"
},
{
house: "houseName1",
familyMember: "Mom"
},
{
house: "houseName1",
familyMember: "Dad"
}]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为分层对象POJO:
class House {
String houseName;
List<FamilyMember> familyMembers;
}
class FamilyMember {
String familyMember;
}
Run Code Online (Sandbox Code Playgroud)
我发现的每一条信息都是将其转换为地图.但是我想要List<House>包含List<FamilyMember>任何想法我该怎么办?
试试这个吧
Map<String,List<FamilyMember>> map = list
.stream()
.collect(
Collectors.groupingBy(
FamilyInformation::getHouseName,
Collectors.mapping(
family -> new FamilyMember(family.getFamilyMember()),
Collectors.toList()
)
)
);
Run Code Online (Sandbox Code Playgroud)
然后
List<House> result = map.entrySet()
.stream()
.map(e -> new House(e.getKey(), e.getValue()))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)