【发布时间】:2014-05-02 18:20:40
【问题描述】:
Apache Commons Collections 库的 4.0 版本增加了泛型支持。我无法转换我的代码以利用它:
我想要一个MultiValueMap,它以字符串为键,以字符串集合为值。但是:
- 键应该保持插入顺序(所以我创建
通过装饰
LinkedHashMap来实现多值映射) - 值应该是
每个键都是唯一的并保留插入顺序(所以我想要
values 集合类型为
LinkedHashSet)。
我能得到的最接近的是:
MultiValueMap<String, String> orderedMap = MultiValueMap.multiValueMap(
new LinkedHashMap<String, Collection<String>>(),
LinkedHashSet.class
);
但这会产生错误:
类型中的方法
multiValueMap(Map<K,? super C>, Class<C>)MultiValueMap不适用于参数(LinkedHashMap<String,Collection<String>>, Class<LinkedHashSet>)
所以现在我陷入了泛型地狱。任何建议都将受到欢迎。
在 4.0 版之前,我通过以下方式实现了这一点:
MultiValueMap orderedMap = MultiValueMap.decorate(
new LinkedHashMap<>(),
LinkedHashSet.class
);
简单!我提供LinkedHashMap 来装饰MultiValueMap 行为,并指定要用作值的集合类型(LinkedHashSet)。但这需要在我调用 put() 和 get() 时进行转换,因此我希望能够使用 4.0 提供的新通用版本。
【问题讨论】:
标签: java generics apache-commons-collection