Igo*_*nyi 3 java collections java-stream
成像对象采用以下方法:
class A { List<B> getIds(){...} }
Run Code Online (Sandbox Code Playgroud)
现在我有一个A的集合作为输入; 而且我希望得到一组独特的ID,通常你会选择:
Set<B> ids = new HashSet<>();
for(A a : input){
ids.addAll(a.getIds());
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用流API在一行中执行相同操作,如下所示
Set<List<B>> set = input.stream().map((a) -> a.getIds()).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
但制作扁平的B组
你必须使用 flatMap
input.stream()
.map(a -> a.getIds())
.flatMap(ids -> ids.stream())
.collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
这将产生平面套装.
| 归档时间: |
|
| 查看次数: |
1069 次 |
| 最近记录: |