创建番石榴多地图的紧凑方式?

2022-09-01 02:16:51

如果我想创建一个具有简单默认值的新默认值,我目前需要做这样的事情:Multimap

private final Multimap<Key, Value> providersToClasses = Multimaps
        .newListMultimap(
                new HashMap<Key, Collection<Value>>(),
                new Supplier<List<Value>>() {
                    @Override
                    public List<Value> get() {
                        return Lists.newArrayList();
                    }
                });

...因为 Java 无法推断出正确的类型,如果 用于支持映射。当然,这可以重构为一个单独的方法,但是已经有一种方法可以更简洁地编写它吗?Maps.newHashMap


答案 1

为什么你不使用ArrayListMultimap.create()来处理这样一个简单的情况?这是创建简单的HashMap/ArrayList的默认方法,这可能是最常用的多映射。


答案 2

我在编写客户端和构建查询参数的映射时遇到了这个问题。我喜欢构建多映射的一个很好的简洁模式是使用ImmutableMultiMap#builder。

Multimap<String, String> queryParams = 
  ImmutableMultimap.<String, String>builder()
    .put("key-1", "value-1")
    .put("key-1", "value-2")
    .build();

推荐