【问题标题】:how internally map and flatmap works in java 8 [duplicate]内部地图和平面地图如何在java 8中工作[重复]
【发布时间】:2020-01-10 08:30:32
【问题描述】:
在 java 8 中,我们什么时候应该使用 Stream.map 和平面地图方法?
我对用例有点困惑。请给出使用这两种方法的一些场景。
【问题讨论】:
-
-
-
这就像你的标题和你的文字问两个不同的问题?文中的那个是你要问的问题吗?请编辑您的问题并澄清并增加精确度(使用edit 链接)。
标签:
java
java-8
java-stream
flatmap
【解决方案1】:
当您想要转换流时使用映射。
例如,您有一个购物车,对于购物车中的每件商品,您都想获取商品详情或其他信息。
FlatMap 将上述地图操作与平面操作相结合
例如,您有一堆订单,并且想知道所有订单的售出商品总数。您可以使用平面图操作来获取项目数
文档帮助顺便说一句
【解决方案2】:
Map 用于将对象从一个流转换为另一个流。
例如:
class User {
private Long id;
public Long getId(){
return id;
}
}
假设您有一个用户列表,而您的用例是单独获取用户 ID。地图的优势就在这里。
List<User> users = new ArrayList<>();
List<Long> ids = users.stream().map(user ->
user.getId() ).collect(Collectors.toList());
FlatMap 也与 Map 相同,但它还有一个优点是将多个列表合并为单个列表。
例子:
List<List<String>> stringlist = Arrays.asList( Arrays.asList("a"),
Arrays.asList("b") );
List<String> strings = stringlist.stream().flatMap(Collection::stream)
.collect(Collectors.toList()));