类的数组(Java)

时间:2012-12-05 03:04:13

标签: java arrays class

我似乎无法找到编写类数组的正确方法。在这种形式下,编译时不会抛出任何错误,但是当我尝试使用数组/类时,我收到错误。类的数组位于一个名为HashTable的类中(我需要为分配编写自己的类),我使用下面的代码对其进行测试:

theHashTable.insert("aa", "ab");

这是HashTable类:

编辑:正如Aniket所指出的那样,fileNames没有被初始化。我在下面更正了这一点,但收到了同样的错误。

private class HashTable {       
    private class Value {
        ArrayList<String> fileNames;
        String word;
        Value() {
            fileNames = new ArrayList<String>();
        }
    }

    private int currentSize = 101;
    private Value[] items;
    private HashTable() {
        items = new Value[currentSize];
        for (int i = 0; i < currentSize; i++) items[i] = new Value();
    }

    private int hash(String in) {
        int out = 0;
        for (int i = 0; i < in.length(); i++) out += 37*out+in.charAt(i);
        out %= currentSize;
        if (out < 0) out += currentSize;
        return out;
    }

    public void insert(String inW, String inF) {
        int index = hash(inW);
        index = 0;
        if (items[index].word.length() == 0) {
            items[index].word = inW;
            items[index].fileNames.add(inF);
        }
        else if (items[index].word.compareTo(inW) == 0) items[index].fileNames.add(inF);
        else System.out.println("Collision");
    }
}

2 个答案:

答案 0 :(得分:2)

fileNames Values类中的ArrayList永远不会被初始化。编写Values的构造函数并初始化fileNames

答案 1 :(得分:1)

使用初始化(示例代码中的第3行)在内部类值中声明fileNames

     ArrayList<String> fileNames = new  ArrayList<String>();