ConcurrentHashMap
의 사용을 광산 CaseInsensitiveConcurrentHashMap
으로 바꾸려고합니다. 그러나, 나는 hashmap을 인스턴스화 할 수 없다. 나는 나의 구현을 제공 할 것이다.Java에서 ConcurrentHashMap 대/소문자를 구분하지 않는 키 집합을 만들 수 있습니까?
해시 맵 클래스 - 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());
}
}
그리고 그 아래에있는 내 코드는 새로운 해시지도가 작동하지 않습니다 : tester
에서
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>>>();
}
두 라인은 실패합니다.
Incorrect number of arguments for type CaseInsensitiveConcurrentHashMap<T>; it cannot be parameterized with arguments <String, Collection<SomeClass>>
내가 시도 할 수 있습니다 무엇으로 어떤 생각이 내 오류 메시지가 무엇입니까?
는 (은'String's 제거) 그것을 하나를 통과해야하므로 귀하의지도는, 단 하나 개의 형식 매개 변수를했다 – kiheru
이 수 사용하여 인스턴스화한다 get 메소드가 Map.get()을 오버라이드하지 않기 때문에 호출되지 않을 것이라는 점을 알고 있어야합니다. ConcurrentHashMap의 다른 put 메소드도 대체해야합니다. –