Java Stream:如何遍历列表映射并将数据收集到列表

乌泽尔

我有地图

HashMap<String, List<SomeObject>> map = data();

我需要遍历对象列表并将其映射到另一个对象,然后收集到另一个对象列表。示例代码如下,我怎样才能以正确的方式做到这一点?

 List<User> userList = new ArrayList<>();
 map.forEach((key, value) ->
    userList = value.stream()
                .filter(obj-> testSomeCondition(obj))
                .map(obj -> mapper.mapToUser(obj,key))
                .collect(Collectors.toList())
 );
代码量表

如果性能不是问题(由于顺序forEachOrdered)并且您可以使用副作用函数(添加可变集合)这应该有效。(IMO 比嵌套流更具可读性)

 List<User> result = new ArrayList<>();
 map.forEach((key, value) -> {
           value
          .stream()
          .filter(this::testSomeCondition)
          .map(object -> mapper.mapToUser(object, key))
          .forEachOrdered(result::add);
       });
 public boolean testSomeCondition(Object object) {return true;}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何收集到地图中值形成一个列表时重复键在流,在Java 8

Java的收集到列表中,但指定的两个元素顺序预先定义

Java的8过滤+收集到列表中的NullPointerException

如何使用Java流将多个列表收集到一个列表中?

Java Stream从对象列表生成映射

Java流-如何遍历列表,显示要素并在同一行中收集它们

如何使用Java 8 groupingBy收集到不同类型的列表中?

Java Stream以相反的顺序收集到TreeMap

Java 8的可选列表收集到列表编译错误

Java映射/收集流以汇总列表列表

Java 8如何处理一个列表中的对象并将其收集到另一个列表中?

[Java] [功能]将列表中的字段项收集到此类字段的列表中

如何在Java 8中收集到LinkedHashMap

您如何制作一个收集到com.google.common.collect.ImmutableSet的java.util.stream.Collector?

Java流将数组收集到一个列表中

Java流将对象列表收集到存储桶

收集字符串列表以使用Java 8 Stream API进行映射

Java Stream-将数据行收集到更少的行中,并将一列分组

收集整数列表(List <Integer>)以与Java 8 Stream API映射

使用Java 8从地图到列表收集数据

如何访问彼此嵌套的多层词典和列表,并将它们收集到列表中

Java 8流:遍历映射内的列表

Java遍历列表的嵌套映射

Java流基于列的总和将Excel CSV收集到列表过滤

Java 8流中间映射/收集到具有2个值的流

Java 8:字段到项目列表的映射

如何将 int 列表收集到 Java 8 中的条目列表

如何在 Java 中使用流/lambda 重复调用 0 参数函数并将返回值收集到列表中?

如何根據類的屬性將對象收集到列表,然後在 java 8 或 11 中映射到 HashMap?