使用流将列表收集到联合列表

时间:2018-10-23 13:43:52

标签: java java-stream

我正在尝试编写一个从缓存中获取数据的表达式(它们返回一个List)并将所有内容收集在一起。

我想到了:

List<myDto> myJointSnapshot = cachesMap.values().stream()
  .flatMap(c->c.getSnapshot()).collect(Collectors.toList());

其中getSnapshot还返回List

这给了我一个错误:不存在类型变量R的实例,因此List 符合Stream <吗?扩展R>

我该如何纠正表达式有效?

2 个答案:

答案 0 :(得分:5)

numpy.inf

flatMap(c->c.getSnapshot().stream())... 期望得到flatMap,在您的情况下为Stream

答案 1 :(得分:3)

为了更好地理解,您可以分为2个步骤

// Lambda
List<myDto> myJointSnapshot = cachesMap.values().stream()
                                                .map(c -> c.getSnapShot())
                                                .flatMap(l->l.stream())
                                                .collect(Collectors.toList());

// Method reference
List<myDto> myJointSnapshot = cachesMap.values().stream()
                                                .map(Caches::getSnapshot) // replace 'Caches' by real type
                                                .flatMap(List::stream)
                                                .collect(Collectors.toList());