2016-11-23 39 views
1

是否有可能以任何方式将Multimap转换为HashMap。我知道我们可以将multimap转换为map,但是我想将multimap转换为hashmap。我不认为它是可能的,但如果有任何出路,请让我知道。Guava Mutlimap to HashMap

+1

由于名称表明它们是不同的东西,因此不能将'Multimap'命名为'HashMap'。你可以在'Multimap'上调用'asMap()',如果你想确保它是'HashMap',可以尝试'Maps.newHashMap(multimap.asMap())'。但请注意一点:你会得到一个'Map >'所以如果你有任何机会在'Map '之后,就会被警告这可能会导致数据丢失(出于某种原因存在multimaps) 。 – Thomas

+0

我的回答对你有帮助吗? – xenteros

+0

@Thomas你为什么不提供你的评论作为答案? – mfulton26

回答

4

是否有可能以任何方式将Multimap转换为HashMap。

不,你不能多重映射到一个HashMap,因为 - 正如名称所表示的 - 他们是不同的东西,即Multimap意味着多个值映射到一个关键而Map是旨在将一个值映射到密钥。因此,将Multimap<K, V>转换为Map总是会产生类似Map<K, Collection<V>>(或者,取决于实际的Multimap实施方式以及使用其他方法Map<K, List<V>>等)。

我知道我们可以将multimap转换为地图,但我想将multimap转换为hashmap。

你可能指的是asMap()方法返回一个Map<K, Collection<V>>。这些可能不是HashMap的实例,但您可以通过调用Maps.newHashMap(multimap.asMap())轻松创建一个基本上采用生成的映射并将值(引用)复制到新的HashMap

+0

'不,你不能把一个Multimap映射到一个HashMap,因为 - 名称表明 - 他们是不同的东西'大声笑 - 没有任何意义。你可以将'Exception'强制转换为'RunTimeException'。 – xenteros

+0

@xenteros不,你不能,'RuntimeException'扩展'Exception',而不是相反。至于答案,这显然意味着'Multimap'和'Map'是无关的接口,就像后面开发的那样。 –

+0

@xenteros'RuntimeException' _是一个''Exception'',因此情况有效(尽管不一定在两个方向取决于实际的实现)。然而'Multimap'和'Map'是不同的东西,并且没有共同的层次结构(除了'Object' ofc)。只是他们都是地图并不意味着你可以_cast_他们。 – Thomas