我有以下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]