guava Multimap 实例化

SetMultimap 为例介绍一下

直接构造实现类

SetMultimap<Integer, String> dict = HashMultimap.create(8, 256);

这种方式需要对实现类底层比较了解,例如 HashMultimap,其底层实现是 HashMap<Integer, HashSet<String>>,其源码如下

  private HashMultimap() {
    super(new HashMap<K, Collection<V>>());
  }
  ......
  
    @Override
  Set<V> createCollection() {
    return Sets.<V>newHashSetWithExpectedSize(expectedValuesPerKey);
  }

使用 Builder

SetMultimap<Integer, String> dict = SetMultimapBuilder.treeKeys().linkedHashSetValues().build();

这是经典的 builder 模式,可以自定义底层实现

Last updated