基于每个对象的两个属性将POJO的List转换为List字符串



我有以下POJO:

public class Alpha {
String exp1;
String exp2;
public Alpha(String exp1, String exp2) {
super();
this.exp1 = exp1;
this.exp2 = exp2;
}
public String getExp1() {
return exp1;
}
public String getExp2() {
return exp2;
}
}

main()方法:

public static void main(String[] args) {
SpringApplication.run(Main.class, args);
Alpha alpha1 = new Alpha("patrol", "amazon");
Alpha alpha2 = new Alpha("converse", "funky");
List<Alpha> list = Arrays.asList(alpha1, alpha2);
List<String> collect = list.stream()
.map(Alpha::getExp1)
.collect(Collectors.toList());
System.out.println(collect);
}

输出:

[patrol, converse]

期望的输出应该如下所示:

[patrol, converse, patrol, amazon]

问题是如何获得仅使用单个流?

您可以使用flatMap():

Alpha alpha1 = new Alpha("patrol", "amazon");
Alpha alpha2 = new Alpha("converse", "funky");
List<Alpha> list = Arrays.asList(alpha1, alpha2);

List<String> collect = list.stream()                               // Stream<Alpha>
.flatMap(alpha -> Stream.of(alpha.getExp1(), alpha.getExp2())) // Stream<String>
.collect(Collectors.toList());

System.out.println(collect);

输出:

[patrol, amazon, converse, funky]

最新更新