在Java中实例化google-collections的BiMap

时间:2010-03-11 21:49:21

标签: java guava bimap

如何实例化Bimap Google集合?

我已阅读问题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>

3 个答案:

答案 0 :(得分:33)

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

在您的情况下,这意味着更改

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

this.wordToWordID = HashBiMap.create(); 

答案 1 :(得分:6)

创建BiMap的另一种很酷的方法,但在这种情况下是一个不可变的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

答案 2 :(得分:5)

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