Java8:Stream在同一个流中映射两个属性
发布时间:2020-05-24 17:49:29 所属栏目:Java 来源:互联网
导读:我有一个带有以下签名的类Model: class Model { private String stringA; private String stringB; public Model(String stringA, String stringB) { this.stringA = stringA;
|
我有一个带有以下签名的类Model: class Model {
private String stringA;
private String stringB;
public Model(String stringA,String stringB) {
this.stringA = stringA;
this.stringB = stringB;
}
public String getStringA() {
return stringA;
}
public String getStringB() {
return stringB;
}
}
我想映射List< Model>到列表< String>在单个流中包含stringA和stringB List<String> strings = models.stream()
.mapFirst(Model::getStringA)
.thenMap(Model::getStringB)
.collect(Collectors.toList());
要么: List<String> strings = models.stream()
.map(Mapping.and(Model::getStringA,Model::getStringB))
.collect(Collectors.toList());
当然,他们都没有编译,但你明白了. 它有可能吗? 编辑: 例: Model ab = new Model("A","B");
Model cd = new Model("C","D");
List<String> stringsFromModels = {"A","B","C","D"};
解决方法您可以一个接一个地列出所有值,如下所示:List<String> resultSet =
modelList.stream()
.flatMap(e -> Stream.of(e.getStringA(),e.getStringB()))
.collect(Collectors.toList());
传递给flatMap的函数将应用于每个元素,从而产生Stream< String>.这里需要使用flatMap来折叠所有嵌套的Stream< Stream< String>>到一个流< String>因此,我们可以将元素收集到List< String>中. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
