如何转换Iterable <map.entry <a,b>&gt;使用Guava映射<a,b>?</a,b> </map.entry <a,b>

时间:2013-11-12 17:24:27

标签: java guava

我能够通过以下方式做到这一点:

Iterable<Map.Entry<A,B>> entryIterable
Map<A, B> aBMap = newHashMap();
for (Map.Entry<A, B> aBEntry : entryIterable) {
   aBMap.put(aBEntry.getKey() , aBEntry.getValue());
}

使用Guava有更简单的方法吗?

3 个答案:

答案 0 :(得分:6)

不,这被拒绝,请参阅Idea Graveyard

  

根据Iterable<Pair>Iterable<Map.Entry>Object[](交替密钥和值)或List<K> + List<V>

     

请注意,我们仍然可以添加ImmutableMap.copyOf(Iterable<Entry>)

答案 1 :(得分:1)

只是简单一点:

ImmutableMap.Builder<A, B> builder = ImmutableMap.builder();
for (Map.Entry<A, B> entry : entries) {
  builder.put(entry); // no getKey(), no getValue()
}
return builder.build();

答案 2 :(得分:0)

这已在Guava 19.0中实现,请参阅ImmutableMap.copyOf(Iterable)