use*_*345 5 java list java-8 java-stream collectors
我有两个 POJO,示例代码如下
class A {
String name;
Object entries; // this can be a List<String> or a string - hence Object datatype
//getters and setter here
}
class B {
int snumber;
List<A> values;
//getters and setters here
}
Run Code Online (Sandbox Code Playgroud)
控制器类
class ControllerA {
public getList(B b) {
List<String> list = b.getValues().stream.map(e -> e.getEntries()).collect(Collectors.toList()));
}
}
Run Code Online (Sandbox Code Playgroud)
这会返回一个列表列表:
[[12345, 09876], [567890, 43215]]
Run Code Online (Sandbox Code Playgroud)
但我想要的是一个像
[12345,09876,567890, 43215]
Run Code Online (Sandbox Code Playgroud)
我怎样才能用 Java 8 流做到这一点?
我也试过flatMap,但这与Object条目的数据类型不符。
考虑List<String>作为一个字段entries的A类。
正如@Eugene在评论中提到的,
如果它是一个单一的 String 使它成为
List一个单一的元素;如果它是一个包含多个字符串的列表,那么就这样做。
使用单一类型的集合可以简化过程:
b.getValues() // -> List<A>
.stream() // -> Stream<A>
.map(A::getEntries) // -> Stream<List<String>>
.flatMap(Collection::stream) // -> Stream<String>
.collect(Collectors.toList()); // -> List<String>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6976 次 |
| 最近记录: |