映射集合的惯用方法是什么? 到MultiMap? [duplicate]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了映射集合的惯用方法是什么? 到MultiMap? [duplicate]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

Collection<Foo>映射到MultiMap<A, B>的惯用方法是什么?是

public class Foo {
    public A key;
    public B val;
}

(当然,这是简化的。)

我能想到的方法是使用Collection::stream()在每个元素上调用MultiMap::put,但我觉得可能有更优雅的方法来做到这一点。

并且可以将new MultiMap与这些映射一起返回,所有这些都在一行中吗?

答案

从版本21.0开始,最常用的方法是使用Guava已经提供的一个收集器,在这种情况下是由Multimaps.toMultimap实用方法提供的收集器:

Multimap<A, B> result = foos.stream()
    .collect(Multimaps.toMultimap(Foo::getA, Foo::getB, ArrayListMultimap::create));

这会创建一个ArrayListMultimap,但当然你可以通过使用工厂方法或Guava的特定构建器之一来创建所需的具体Multimap

以上是关于映射集合的惯用方法是什么? 到MultiMap? [duplicate]的主要内容,如果未能解决你的问题,请参考以下文章

在 Clojure 的嵌套映射中关联多个键/值的惯用方法是啥?

在 OTP/Erlang 中将 ID 映射到进程的惯用方式是啥?

guava multimap 到响应模型的映射结果

STL map与multimap

Java集合类汇总记录--guava篇

计算选项集合中出现次数的惯用方法