【问题标题】:Use of flat map with list of list使用带有列表列表的平面地图
【发布时间】:2023-04-01 01:08:01
【问题描述】:

如果我有List<List<Foo>>,我可以使用平面地图来展平列表。 但是我有 MyClass 有一个 List<Foo>Foo 类有酒吧列表 List<Bar> 然后我必须做这样的事情:

myClass.getFoos().stream().map(Foo::getBars).forEach({
    bar -> // some code
});

在这种情况下是否可以使用平面地图,以便我可以一次性从MyClass 获取条形列表。

【问题讨论】:

    标签: java-8 java-stream flatten


    【解决方案1】:

    试试这个:

    myClass.getFoos().stream()
        .map(Foo::getBars)
        .flatMap(List::stream) // flatten the lists
        .forEach(...);
    

    注意方法引用的特殊使用,我发现它比 lambdas 更简洁、更易于阅读。

    【讨论】:

    • 太棒了,我不知道我可以在地图上制作平面地图。
    【解决方案2】:
    myClass.getFoos()
            .stream() 
            .flatMap(x -> x.getBars().stream())
            .forEach(...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-30
      • 2019-02-20
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多