4

我能够通过执行以下操作来做到这一点:

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 做到这一点?

4

3 回答 3

6

不,这被拒绝了,请参阅想法墓地

Iterable<Pair>从, Iterable<Map.Entry>, Object[](交替键和值)或从List<K>+创建映射List<V>

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

于 2013-11-12T17:33:02.653 回答
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();
于 2013-11-12T18:05:38.490 回答
1

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

于 2017-10-11T10:15:42.653 回答