【问题标题】:how internally map and flatmap works in java 8 [duplicate]内部地图和平面地图如何在java 8中工作[重复]
【发布时间】:2020-01-10 08:30:32
【问题描述】:

在 java 8 中,我们什么时候应该使用 Stream.map 和平面地图方法? 我对用例有点困惑。请给出使用这两种方法的一些场景。

【问题讨论】:

  • 你看过javadoc吗?
  • 这就像你的标题和你的文字问两个不同的问题?文中的那个是你要问的问题吗?请编辑您的问题并澄清并增加精确度(使用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()));
    

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 2018-04-12
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2019-08-17
      • 2020-12-19
      相关资源
      最近更新 更多