我注意到公地有一个MultiValueMap,但它不支持泛型。有这样的地图吗?
答案 0 :(得分:10)
您是否尝试过Guava的Multimap?
类似于Map的集合,但可以将多个值与单个键相关联。如果您使用相同的键但不同的值调用put(K,V)两次,则multimap包含从键到两个值的映射。
根据实现,多图可能允许也可能不允许重复的键值对。换句话说,在添加相同的键和值两次之后的多图内容在实现之间变化。在允许重复的多图中,multimap将包含两个映射,get将返回包含该值两次的集合。在不支持重复的多图中,multimap将包含从键到值的单个映射,get将返回包含值一次的集合。
http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multimap.html
答案 1 :(得分:4)
绝对!查看Google Guava's Multimaps
。
Multimap<Foo, Bar> mm = new ListMultimap<Foo, Bar>();
// fill it however...
Foo foo = ...;
Collection<Bar> bars = mm.get(foo);
答案 2 :(得分:2)
可能Guava是一个更好的选择,但如果你真的想坚持使用Commons集合API:
http://sourceforge.net/projects/collections
受欢迎的Jakarta Commons-Collections项目的Java 5泛型启用版本。 Commons-Collections 3.1中的所有适当类都已经过重构,以支持Java泛型。
答案 3 :(得分:0)
https://mvnrepository.com/artifact/org.apache.commons/commons-collections4支持通用集合!无需将番石榴放在桌子上。
只需从org.apache.commons.collections4
而不是org.apache.commons.collections
导入类:
import org.apache.commons.collections4.MultiValuedMap;
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
private MultiValuedMap<String, Employee> nameLookup = new ArrayListValuedHashMap<>();