收集到使用Java 8流番石榴的ListMultiMap

codastic:

我试图收集到使用Java 8,而不使用foreach操作的ListMultiMap。

如果我把代码写在Java 7中,这将是这样的:

ListMultimap<String, String> result = ArrayListMultimap.create();
     for(State state: states) {
      for(City city: state.getCities()) {
        result.put(state.getName(), city.getName());
      }
    }

我在网上找到一个网站,大约创建您自己的收藏会谈,在方案中使用,如这一个。我用于收集此实现。然后我写了下面的代码:

     ListMultimap<String, String> result = states
        .stream()
        .flatMap(state -> state.getCities().stream()
            .map(city -> {
              return new Pair(state, city);
            }))
        .map(pair -> {
          return new Pair(pair.first().getName(), pair.second().getName()));
        })
        .collect(MultiMapCollectors.listMultimap(
                    Pair::first,
                    Pair::second
                )
        );

但在收集的水平,我只能通过只有一个参数,我似乎可以找到一种方法,传递两个参数。下面从网站的例子中,我明白了使用这两种,我需要存储在多重映射这样的“配对”,如下:

ArrayListMultimap<String, Pair> testMap = testObjectList.stream().collect(MultiMapCollectors.listMultimap((Pair p) -> p.first().getName()));

然而,这是不是我要找的,我想用国家的名称和使用Java 8的集电极(没有的forEach)城市的名字收进ListMultimap。

有人可以帮助我吗?谢谢!

路易·沃瑟曼:

ImmutableListMultimap.flatteningToImmutableListMultimap

return states.stream()
   .collect(flatteningToImmutableListMultimap(
      State::getName,
      state -> state.getCities().stream().map(City::getName)));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java流:发行约收集到地图<字符串,对象>

如何收集到地图中值形成一个列表时重复键在流,在Java 8

使用Java 8流收集到增值基于现有的键/值对的

使用流从地图和值,并收集到列表

Java的8过滤+收集到列表中的NullPointerException

如何使用Java流将多个列表收集到一个列表中?

在Java 8中使用Lambda将流收集到HashMap中

如何使用Java 8 groupingBy收集到不同类型的列表中?

在Java-8中使用新标识符将返回的HashMap收集到一个中

使用Java 8流将子对象收集到parentObjectId的哈希图

如何在Java 8中将流的结果收集到自定义对象的数组中

Java8:按键将流收集到SortedMap中

Java 8收集到Map <String,List <Object >>

使用流收集到地图

Java 8的可选列表收集到列表编译错误

如何将Java 8流收集到Guava ImmutableCollection中?

如何在Java 8中收集到LinkedHashMap

将Java-8流收集到Guava ImmutableList的最佳方法

Java流将数组收集到一个列表中

Java流将对象列表收集到存储桶

在集合上使用Java8流收集到HashSet中会导致“类型不匹配”错误

处理列表流并仅使用非空值收集到map / ImmutableMap中

将Java8 IntStream收集到Deque接口中

Java流基于列的总和将Excel CSV收集到列表过滤

Java 8流中间映射/收集到具有2个值的流

我可以结合使用Java8(流,lambda)和番石榴吗?

如何将 int 列表收集到 Java 8 中的条目列表

如何在 Java 中使用流/lambda 重复调用 0 参数函数并将返回值收集到列表中?

使用单个流将多个属性收集到 Map