我正在尝试将ConcurrentHashMap
替换为我的CaseInsensitiveConcurrentHashMap
。但是,我无法实例化我的hashmap。我将提供我的实现。
哈希映射类 - 基于SO问题:https://stackoverflow.com/a/8237007/850475
import java.util.concurrent.ConcurrentHashMap;
public class CaseInsensitiveConcurrentHashMap <T> extends ConcurrentHashMap<String, T>{
@Override
public T put(String key, T value) {
return super.put(key.toLowerCase(), value);
}
public T get(String key) {
return super.get(key.toLowerCase());
}
}
我的下面的代码不适用于新的哈希映射:
public class tester {
private static ConcurrentMap<String, SomeClass> items = new CaseInsensitiveConcurrentHashMap<String, SomeClass>();
private static ConcurrentMap<String, CaseInsensitiveConcurrentHashMap<String, Collection<SomeClass2>>> tagMap = new CaseInsensitiveConcurrentHashMap<String, CaseInsensitiveConcurrentHashMap<String, Collection<SomeClass2>>>();
}
tester
中的两行都失败了。这是我的错误消息:
Incorrect number of arguments for type CaseInsensitiveConcurrentHashMap<T>; it cannot be parameterized with arguments <String, Collection<SomeClass>>
关于我可以尝试的任何想法?
答案 0 :(得分:3)
class CaseInsensitiveConcurrentHashMap <T>
您的hashmap采用单个通用参数。
因此,当您使用它时,您必须只传递一个通用参数。
答案 1 :(得分:3)
CaseInsensitiveConcurrentHashMap只有一个值的通用参数,因此应该使用new CaseInsensitiveConcurrentHashMap<SomeClass>()