16

你怎么能实例化一个Bimap谷歌集合?

我读过问题Java: Instantiate Google Collection's HashBiMap

我的代码示例

import com.google.common.collect.BiMap;

public class UserSettings {

 private Map<String, Integer> wordToWordID;

 UserSettings() {

  this.wordToWordID = new BiMap<String. Integer>();

我明白了cannot instantiate the type BiMap<String, Integer>

4

3 回答 3

34

如链接问题所述,您应该使用create()工厂方法。

在你的情况下,这意味着改变

this.wordToWordID = new BiMap<String. Integer>();

this.wordToWordID = HashBiMap.create(); 
于 2010-03-11T21:52:44.197 回答
6

BiMap是一个接口,因此无法实例化。您需要根据所需的属性实例化一个具体的子类,可用的子类(根据 javadoc)是EnumBiMapEnumHashBiMapHashBiMapImmutableBiMap

于 2010-03-11T21:53:13.747 回答
6

创建 BiMap 的另一种很酷的方法是使用ImmutableBiMap.Builder.

static final ImmutableBiMap<String, Integer> WORD_TO_INT =
   new ImmutableBiMap.Builder<String, Integer>()
       .put("one", 1)
       .put("two", 2)
       .put("three", 3)
       .build();

http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ImmutableBiMap.html

于 2015-03-21T12:12:22.213 回答