firstlist
.stream()
.map( x -> {
return secondList
.stream()
.map( y -> { //return a string } )
.collect(Collectors.toList()) // "Output" I need
}
)
.//Get the "Output" here
我有两个清单。第一个列表中的项目必须与第二个列表进行比较,并且必须构建新列表。
样本输入
List 1 : [ { "id" ; 3, "names" : ["test","test2"] }]
List 2 : [ {"name": :"test" , "age" :3}]
输出:
List 3 : [ {"id" : 3, "name" : "test", "age" :3} ]
PS:names
应根据第二个列表检查第一个列表中的内容
你需要这样的东西:
List<ObjectA> firstlist = new ArrayList<>();
firstlist.add(new ObjectA(3, Arrays.asList("test", "test2")));
List<ObjectB> secondList = new ArrayList<>();
secondList.add(new ObjectB("test", 3));
List<ObjectC> result = firstlist.stream()
.flatMap(a -> secondList.stream()
.filter(b -> a.getNames().contains(b.getName()))
.map(c -> new ObjectC(a.getId(), c.getName(), c.getAge()))
).collect(Collectors.toList());
如果我理解你的问题,你有三个不同的对象,如下所示:
@Getter @Setter @AllArgsConstructor @NoArgsConstructor
public class ObjectA {
private int id;
private List<String> names;
}
@Getter @Setter @AllArgsConstructor @NoArgsConstructor
public class ObjectB {
private String name;
private int age;
}
//And the result Object you want to get
@Getter @Setter @AllArgsConstructor @NoArgsConstructor @ToString
public class ObjectC {
private int id;
private String name;
private int age;
}
这个例子的输出是:
[ObjectC(id=3, name=test, age=3)]
对于注释,我使用 Lombok
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句