Java 8 列表列表和Java 8

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

我有一个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).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());
List

result=rList.stream() .map(R::getP) .flatMap(列表::流) .collect(Collectors.toList());

List

result=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());