【发布时间】:2020-07-10 22:43:19
【问题描述】:
我无法解决这个问题。
问题
我想用 Java 流来处理这个:
List<Manufacturer> manufacturers = ... // List of Manufacturer-Objects
List<List<Car>> cars = new ArrayList<>();
for (Manufacturer man : manufacturers) {
cars.add(man.getCars()); // Let's just say getCars() returns a List of cars.
}
我认为 Java Streams 应该如下所示:
List<List<Car>> cars = manufacturers.stream().
.flatMap(man -> man.getCars().stream())
.collect(Collectors.toList());
错误
但我的 IDE 显示以下内容 no instance(s) of type variable(s) R exist so that List<Event> conforms to Stream<? extends R>
还有java编译器:
java: incompatible types: cannot infer type-variable(s) R
(argument mismatch; bad return type in lambda expression
java.util.List<elements.Car> cannot be converted to java.util.stream.Stream<? extends R>)
对此有任何解决方案吗? 谢谢!
【问题讨论】:
-
List<List<Car>> cars = manufacturers.stream() .map(man -> man.getCars()) .collect(Collectors.toList()); -
哦,是的,我忘记了第二个“流”,但这仍然返回相同的错误。我将编辑问题。
-
List<List<Car>> result = manufacturers.stream() .map(Manufacturer::getCars) .collect(Collectors.toList()); -
@RavindraRanwala 这是正确的答案。我只需单击一下即可将其标记为已批准的答案:)
-
哦,我删除了,因为这是一个微不足道的答案。让我收回它
标签: java java-8 java-stream