如何在java中创建一个不区分大小写的键集ConcurrentHashMap?

时间:2013-08-19 15:32:33

标签: java generics extends concurrenthashmap

我正在尝试将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>>

关于我可以尝试的任何想法?

2 个答案:

答案 0 :(得分:3)

class CaseInsensitiveConcurrentHashMap <T>

您的hashmap采用单个通用参数。

因此,当您使用它时,您必须只传递一个通用参数。

答案 1 :(得分:3)

CaseInsensitiveConcurrentHashMap只有一个值的通用参数,因此应该使用new CaseInsensitiveConcurrentHashMap<SomeClass>()

进行实例化