Apache Commons MultiMap已经被弃用,现在应该使用什么?

5

自4.1版本起,Apache Commons的MultiMap接口及其MultiValueMap实现已被弃用。而MultiHashMap似乎完全消失了...

那么我应该使用什么替代方案呢?


2
只需使用 Map<String, Set<String>>。随着 Java 8 中新增的 Map 方法,这些多值映射类型是不必要的。 - Boris the Spider
我使用了List<LinkedHashMap<String, String>>,但有人告诉我为了优化要使用MultiHashMap或其替代品。所以我很困惑。 - WhiteWalker
List<Map<...>> 绝对不同于你提到的任何一件事。它们是 Map<K, Collection<V>> - Boris the Spider
2
这些类并不是 Java 本身的一部分,因此它们不会随着任何 Java 版本一起被弃用。您应该指定这些类的完整限定名称,以便我们知道它们来自哪个库。 - Mark Rotteveel
如果您没有指定所涉及的类(来自哪个库),我该如何检查?在Java SE API中没有这些名称的类,因此它们在任何Java版本中都不会被弃用(只要它们根本不是Java的一部分)。它们可能已经在某个库中被弃用,但是由于您没有提供任何识别信息,我们无法确定是哪个库。 - Mark Rotteveel
显示剩余2条评论
1个回答

9

MultiValuedMap 是替代品,而且它并没有被弃用:

Defines a map that holds a collection of values against each key.

For example:

 MultiValuedMap<K, String> map = new MultiValuedHashMap<K, String>();
 map.put(key, "A");
 map.put(key, "B");
 map.put(key, "C");
 Collection<String> coll = map.get(key);

它替换了MultiHashMap

现在可用的类是 map 子包中的 MultiValueMap。这个版本将在 collections v4.0 中被删除。

以及MultiValueMap:

已弃用。自 4.1 开始,请使用 MultiValuedMap 替代。

废弃与 apache commons collections4 依赖 jar 相关

我认为你指的第三个被废弃的应该是 MultiMap


我得到了“(MultiValuedMap cannot be resolved to a type)”这个错误。 - WhiteWalker
2
@WhiteWalker 你可以使用 MultiValuedMap<String, String> map = new ArrayListValuedHashMap<>(); - user7294900
但是我需要导入什么呢?因为它提示 MultiValuedMap 和 ArrayListValuedHashMap 无法解析。 - WhiteWalker
1
@WhiteWalker commons-collections4 jar的下载链接:https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.0 - user7294900

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接