分配后,TreeMap节点为空

时间:2015-09-25 13:49:20

标签: java dictionary tree treemap

我正在尝试实现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。我已经尝试过调试代码,但问题仍然存在。

我在这里没有包括的其他方法因为它们起作用。

1 个答案:

答案 0 :(得分:0)

你有:

if(isEmpty()){
    node = new Node<>(key, value);
肯定这应该是

if(isEmpty()){
    head = new Node<>(key, value);

注意:这并不能解决您的所有错误,但它确实解决了我的head总是null 问题。