当前位置: 首页 > 知识库问答 >
问题:

java streams-如何使用键上的条件将集合映射中的所有值扁平化

柳俊逸
2023-03-14
Map<Long, List<MyObj>> 
anotherSet.contains(long)

我试过了

map.entrySet()
   .stream()
   .filter(e->anotherSet(e.getKey()))
   .flatMap(e.getValue)
   .collect(Collectors.toList);

但它甚至没有编译

共有1个答案

贲俊才
2023-03-14

你有一些语法错误。

这将生成所需的列表:

List<MyObj> filteredList = 
    map.entrySet()
       .stream()
       .filter(e->anotherSet.contains(e.getKey())) // you forgot contains
       .flatMap(e-> e.getValue().stream()) // flatMap requires a Function that 
                                           // produces a Stream
       .collect(Collectors.toList()); // you forgot ()

如果要生成数组而不是列表,请使用:

MyObj[] filteredArray = 
    map.entrySet()
       .stream()
       .filter(e->anotherSet.contains(e.getKey()))
       .flatMap(e-> e.getValue().stream())
       .toArray(MyObj[]::new);
 类似资料: