为什么不创建arrayList条目?

时间:2016-01-19 03:08:11

标签: java arraylist

我想要完成的是一个学校项目,我在其中创建一个对象,然后将该对象添加到ArrayList。下面的代码是创建一个应该扩展DocumentsIndex的对象ArrayList<IndexEntry>。但是,当我尝试使用方法addWord时,它会失败。

导致失败的问题是什么?另外,使用this.size是否会引用类DocumentsIndex的对象创建版本?

DocumentIndex类:

import java.util.ArrayList;
public class DocumentsIndex extends ArrayList<IndexEntry> {
    public DocumentsIndex(){
        super(10);
    }

    public DocumentsIndex(int x){
        super(x);
    }

    public void addWord(String w, int num) {
        for(int i = 0; i < this.size(); i++) {
            IndexEntry value = this.get(i);
            if(w.compareTo(value.word) == 0){
                value.add(num);
                return;
            } else if(i == this.size() - 1 ||(w.compareTo(value.word) > 0 &&     w.compareTo(this.get(i+1).word) < 0)){
                IndexEntry Inclusion = new IndexEntry(w);
                Inclusion.add(num);
                this.add(i,Inclusion);
            }
        }
    }

    public void addAllWords(String str, int num){
        for(String word : str.split(" ")) {
            //strips by spaces
            this.addWord(word,num);
        }
    }

    public static void main(String[] args) {
        DocumentsIndex swag = new DocumentsIndex();
        swag.addWord("trial",99);
        System.out.print(swag.get(0));
    }
}

IndexEntry类:

import java.util.ArrayList;
public class IndexEntry extends ArrayList {
    public String word;
    private ArrayList<Integer> numsList;

    public IndexEntry(String w){
        word = w.toUpperCase();
        numsList = new ArrayList<Integer>();
    }

    public void add(int x){
    for(int i = numsList.size()-1; i >= 0; i--) {
        if (numsList.get(i) == x)
            numsList.remove(i);
        }

        for(int i = 0; i < numsList.size() ; i++) {
            if (i == numsList.size()-1)
                numsList.add(i, x);
            else if (numsList.get(i) < x && numsList.get(i+1) > x)
                numsList.add(i+1, x);
        }
    }

    public String getWord(){
        return word;
    }

    public String toString(){
        String returnString = word;
        returnString += " : "; 
        for(int i = 0; i < numsList.size(); i++)
            returnString += (numsList.get(i) + " ");

        return returnString;
    }
}

0 个答案:

没有答案