我有地图
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] 删除。
我来说两句