通用LinkedList的数组(NullPointerException)

时间:2017-04-05 18:50:41

标签: java arrays linked-list generic-programming

我总是得到一个NullPointerException,为什么??? 当我运行debug时,int i被设置为-1 .... 但我不理解它,因为数组正在使用LinkedList进行初始化,并添加了一些内容。

通知这是我正在运行的测试:

Dictionary<String, String> dict = new HashDictionary<>(3);
System.out.println(dict.insert("gehen", "go") == null);
System.out.println(dict.insert("gehen", "walk").equals("go"))

这是我的代码:

private static final int DEF_CAPACITY = 31;
private int size = 0;
public LinkedList<Entry<K,V>>[] tab;

@SuppressWarnings("unchecked")
public HashDictionary() {
    tab = new LinkedList[DEF_CAPACITY];
    for(int i = 0; i < tab.length; i++) {
        tab[i] = new LinkedList<>();
        size++;
    }
}

@SuppressWarnings("unchecked")
public HashDictionary(int n) {
    if(isPrim(n)) {
        tab = new LinkedList[n];
        for(int i = 0; i < n; i++) {
            tab[i] = new LinkedList<>();
            size++;

        }
        return;
    }
    System.out.println("Keine Primzahl!");
    return;
}

public int h(K key) {
    int adr = key.hashCode();
    if(adr < 0)
        adr = -adr;
    return adr % tab.length;
}

@Override
public V insert(K key, V value) {
    Entry<K,V> eintrag = new Entry<>(key,value);
    if(search(key) != null) {
        V old = search(key);
        int i = tab[h(key)].indexOf(key);
        tab[h(key)].get(i).setValue(value);
        return old;
    } else {
        if(tab[h(key)] == null)
            tab[h(key)] = new LinkedList<Entry<K,V>>();
        tab[h(key)].add(eintrag);
        return null;
    }
}

@Override
public V search(K key) {
    int i = tab[h(key)].indexOf(key);
    if(i >= 0){
        return tab[h(key)].get(i).getValue();
    }
    return null;
}

感谢您的帮助!

0 个答案:

没有答案