Apache Commons Collections库的 4.0 版本增加了泛型支持。我无法转换我的代码以利用它:
我想要一个MultiValueMap
以字符串为键,以字符串集合为值的方法。但:
- 键应保留插入顺序(因此我通过装饰 a 创建多值映射
LinkedHashMap
) - 每个键的值应该是唯一的并保留插入顺序(所以我希望值 Collection 类型为 a
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 提供的新通用版本。