Java 8 列表列表和Java 8
我有一个R类的列表和另一个p类的列表Java 8 列表列表和Java 8,java-8,java-stream,Java 8,Java Stream,我有一个R类的列表和另一个p类的列表 List<R> rList = getRListFromDb(); 我想知道这里有什么不正确的地方,还想知道在Java8中实现这一点的不同方法 rList.stream().map(R::getP).flatMap(List::stream).forEach(result::addAll); 如果不使用flatMap(因为addAll需要集合,但是flatMap将流转换为流) 这将有助于: rList.stream().map(R::getP
List<R> rList = getRListFromDb();
我想知道这里有什么不正确的地方,还想知道在Java8中实现这一点的不同方法
rList.stream().map(R::getP).flatMap(List::stream).forEach(result::addAll);
如果不使用flatMap
(因为addAll
需要集合
,但是flatMap
将流
转换为流
)
这将有助于:
rList.stream().map(R::getP).forEach(result::addAll);
使用flatMap
时,应为:
rList.stream().map(R::getP).flatMap(List::stream).forEach(result::add);
也就是说,正确的方法是使用收集
:
List<P> result = rList.stream()
.map(R::getP)
.flatMap(List::stream)
.collect(Collectors.toList());
Listresult=rList.stream()
.map(R::getP)
.flatMap(列表::流)
.collect(Collectors.toList());
或
Listresult=rList.stream()
.flatMap(r->r.getP().stream())
.collect(Collectors.toList());
可能重复感谢,最后一个对我有用
rList.stream().map(R::getP).flatMap(List::stream).forEach(result::add);
List<P> result = rList.stream()
.map(R::getP)
.flatMap(List::stream)
.collect(Collectors.toList());
List<P> result = rList.stream()
.flatMap(r -> r.getP().stream())
.collect(Collectors.toList());