我正在尝试实现TreeMap类,并且在将元素放入TreeMap时遇到了问题。这是代码:
public class TreeMap<K,V> implements Map<K,V> {
private Comparator<K> comparator;
private int size;
private Node<K,V> head;
public TreeMap(Comparator<K> comparator){
this.comparator = comparator;
size = 0;
}
@Override
public int size() {
return size;
}
@Override
public boolean isEmpty() {
return size == 0;
}
@Override
public V put(K key, V value) {
return rootPut(head, key, value);
}
private V rootPut(Node<K,V> node, K key, V value){
if(isEmpty()){
node = new Node<>(key, value);
size++;
return null;
}
int compare = comparator.compare(head.key, key);
if(compare == 0){
V auxValue = node.value;
node.value = value;
size++;
return auxValue;
} else if(compare > 0){
return rootPut(node.right, key, value);
} else{
return rootPut(node.left, key, value);
}
}
}
问题是当我执行这一行时:
node = new Node<>(key, value);
节点始终为null。我已经尝试过调试代码,但问题仍然存在。
我在这里没有包括的其他方法因为它们起作用。
答案 0 :(得分:0)
你有:
if(isEmpty()){
node = new Node<>(key, value);
肯定这应该是
if(isEmpty()){
head = new Node<>(key, value);
注意:这并不能解决您的所有错误,但它确实解决了我的head
总是null
问题。