我想要完成的是一个学校项目,我在其中创建一个对象,然后将该对象添加到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;
}
}