我在学校项目的嵌套类中遇到了一些麻烦。目前,我正在尝试编写一种将项目插入到参差不齐的数组数据结构中的方法。它使用由嵌套类创建的对象来跟踪二维数组位置,以便获取要插入的索引。但是,我在以下行收到错误“方法 findEnd(E) 未定义 RaggedArrayList.ListLoc 类型”:
insertLoc.findEnd(item)
我在 stackoverflow 和网络上都进行了广泛的搜索,但还没有找到答案。如果我错过了它并且这是多余的(我知道有很多“未定义类型问题的方法”),那么我道歉。
这是相关代码>>
ListLoc 对象的嵌套类:
private class ListLoc {
public int level1Index;
public int level2Index;
public ListLoc() {}
public ListLoc(int level1Index, int level2Index) {
this.level1Index = level1Index;
this.level2Index = level2Index;
}
public int getLevel1Index() {
return level1Index;
}
public int getLevel2Index() {
return level2Index;
}
// since only used internally, can trust it is comparing 2 ListLoc's
public boolean equals(Object otherObj) {
return (this == otherObj);
}
}
查找匹配项的最后一个索引的方法(不是 ListLoc 嵌套类的一部分):
private ListLoc findEnd(E item){
E itemAtIndex;
for (int i = topArray.length -1; i >= 0; i--) {
L2Array nextArray = (L2Array)topArray[i];
if (nextArray == null) {
continue;
} else {
for (int j = nextArray.items.length -1; j >= 0; j--) {
itemAtIndex = nextArray.items[j];
if (itemAtIndex.equals(item)) {
return new ListLoc(i, j+1);
}
}
}
}
return null;
}
尝试向不规则数组添加新值的方法:
boolean add(E item){
ListLoc insertLoc = new ListLoc();
insertLoc.findEnd(item);
int index1 = insertLoc.getLevel1Index();
int index2 = insertLoc.getLevel2Index();
L2Array insertArray = (L2Array)topArray[index1];
insertArray.items[index2] = item;
return true;
}
感谢您的任何意见。