생성자 내부에 익명 비교자를 작성하는 데 문제가 있습니다.비교기에 대한 캐스트를 사용하는 생성자의 익명 비교 자
이우리가 가
private Comparator<K> _comparator;
우리의 데이터 strcture도있다
을 사용하고, 그러나를 "키 타입이 비교 된 것으로 가정 코드, 즉, Comparable를 구현"다음과 같이 나의 지침입니다 노드의 개인 클래스 :
private static class Node<K,V> extends AbstractEntry<K,V> {
Node<K,V> left, right;
Node(K k, V v) {
super(k,v);
left = right = null;
}
}
내가 이런 식으로를 작성하려고 않았다
public TreeMap() {
_comparator = (Comparator<K>) new Comparator<Node<K,V>>(){
@Override
public int compare(Node<K, V> o1, Node<K, V> o2) {
return ((Integer) o1.getKey()).compareTo((Integer) o2.getKey());
}
};
}
그러나 우리는 노드를 비교하지 않거나 그 키가 정수라고 가정하므로 정확하지 않습니다. 나는 또한 Comparable에 체크되지 않은 캐스트를 사용하기로되어 있는데, 이것을 어떻게 또는 어디에서 할 것인지를 알 수 없다. 다음과 같이
할당에서 실제 지침은 다음과 같습니다
가 작성하는 클래스에서 두 개의 생성자가 있습니다 하나가 null이 아니어야 키 유형에 대한 비교를합니다. 다른 하나는 그렇지 않지만,이 생성자를 사용하면 코드에서 키 유형이 비교 가능하다고 가정해야합니다. 즉, Comparable을 구현합니다. 그런 다음이 가정은 compareTo 메소드를 사용하여 작업을 수행하는 비교기를 만드는 데 사용됩니다.
힌트 또는 아이디어를 제공해 주시면 감사하겠습니다.
우리가 노드를 비교하는 안돼요 * * : 당신은 무엇입니까 비교할 거니? 비교기는 무엇을 위해 사용됩니까? 지시 사항은 무엇입니까? –
더 많은 정보가 있으면 도움이 될 것입니다. – mmsky