두 키를 포함하는 사용자 지정 HashMap
을 만들려고했습니다. 사용자가 K
및 V
의 두 매개 변수를 사용하여 클래스의 객체를 만듭니다. 클래스는 2 HashMaps
: 기본으로 확장 된 <Integer, V>
과 키 저장 <K, Integer>
으로 구성됩니다. 기본적으로 각 값에 대해 2 개의 키가 있습니다 (K
및 Integer
).사용자 지정 다중 키 HashMap 만들기
사용자가 항목을 가져 오려면 K
키 또는 Integer
키를 사용하여 항목을 가져올 수 있습니다. 따라서, 예를 들어, 사용자는 시스템이 같은 키를 가진 정수 keyTable
에 보이는 K
를 사용하는 경우 다음 Integer
내가 그러므로 전에 파라미터를 해본 적이 있어요 V
public class KeyMap<K, V> extends ConcurrentHashMap<Integer, V> {
private HashMap<K, Integer> keyTable = new HashMap<K, Integer>(10);
@Override
public V get(Object key) {
if (key instanceof V) {
return super.get(keyTable.get(key));
}
return super.get(key);
}
}
그러나 값을 찾을 것을 사용 I 문제가 무엇인지 이해할 수 없습니다. 온라인으로 Cannot perform instanceof check against type parameter V. Use instead its erasure Object instead since further generic type information will be erased at runtime
을 받고 있습니다. if (key instanceof V) {
.
원하는 시스템을 구현할 수 있습니까?
하위 클래스를 지정하지 마십시오. 캡슐화하다. http://books.google.com/books?id=Ft8t0S4VjmwC&lpg=PR1&dq=effective%20java&pg=PA81#v=onepage&q=false –
유형 삭제로 인해 'Class'인스턴스를 수락해야합니다. –
SLaks
bimap을 원합니다. http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/collect/BiMap.html –