Java 流中缺少 return 语句
Missing return statement in Java stream
我有以下列表和地图:
final List<Product> productList = productService.findAll(uuidList);
Map<UUID, Product> productMap = new HashMap<>();
我想将元素对添加到地图中,如下所示:
productList.stream().map(product -> {
productMap.put(product.getUuid(), product);
});
然而,最后一行抛出“缺少return语句”错误。当我如下图更新的时候,它已经没有了,但是这次return没用了。那么,我应该如何将 UUID
和 Product
对添加到我的地图中?
这里不用map
,直接用forEach
即可。 map
方法旨在创建另一个流,其元素是从原始流“映射”而来的。forEach
只是对每个元素应用一个消费者,在这种情况下,消费者将元素放入哈希映射中.
productList.stream().forEach(product ->
productMap.put(product.getUuid(), product)
);
您还可以使用地图收集器来简化代码:
Map<UUID, Product> productMap = productList.stream()
.collect(Collectors.toMap(Product::getUuid, Function.identity()));
至于带有 map
的原始代码没有编译的原因,是因为 map
方法需要一个 Function
,根据定义需要一个值 return 的东西。由于您使用的是大括号,因此您应该添加一个 return
语句。或者,您可以删除括号,但请记住我上面提到的内容,并且 return 值在这种情况下没有意义,因为它未被使用:
productList.stream().map(product ->
productMap.put(product.getUuid(), product);
);
我有以下列表和地图:
final List<Product> productList = productService.findAll(uuidList);
Map<UUID, Product> productMap = new HashMap<>();
我想将元素对添加到地图中,如下所示:
productList.stream().map(product -> {
productMap.put(product.getUuid(), product);
});
然而,最后一行抛出“缺少return语句”错误。当我如下图更新的时候,它已经没有了,但是这次return没用了。那么,我应该如何将 UUID
和 Product
对添加到我的地图中?
这里不用map
,直接用forEach
即可。 map
方法旨在创建另一个流,其元素是从原始流“映射”而来的。forEach
只是对每个元素应用一个消费者,在这种情况下,消费者将元素放入哈希映射中.
productList.stream().forEach(product ->
productMap.put(product.getUuid(), product)
);
您还可以使用地图收集器来简化代码:
Map<UUID, Product> productMap = productList.stream()
.collect(Collectors.toMap(Product::getUuid, Function.identity()));
至于带有 map
的原始代码没有编译的原因,是因为 map
方法需要一个 Function
,根据定义需要一个值 return 的东西。由于您使用的是大括号,因此您应该添加一个 return
语句。或者,您可以删除括号,但请记住我上面提到的内容,并且 return 值在这种情况下没有意义,因为它未被使用:
productList.stream().map(product ->
productMap.put(product.getUuid(), product);
);