我从add()
类实现了remove()
和ArrayList
方法。
public void add(Object obj) {
if(data.length - currentSize <= 5) {
increaseListSize();
}
data[currentSize++] = obj;
}
public Object remove(int index){
if(index < currentSize){
Object obj = data[index];
data[index] = null;
int tmp = index;
while(tmp < currentSize){
data[tmp] = data[tmp+1];
data[tmp+1] = null;
tmp++;
}
currentSize--;
return obj;
} else {
throw new ArrayIndexOutOfBoundsException();
}
}
但是,我不知道如何删除ArrayList
中我的members
的特定索引。
if(temp[0].equals("ADD")) {
memberList.add(member);
fileOut.writeLine(member.toString());
fileLog.writeLine("New member " + member.toString() + " was succesfully added");
}
**else if(temp[0].equals("REMOVE")) {
//memberList.remove(index)
}**
}
是否有关于如何删除memberList
对象索引的建议?我可以修改我的remove()
方法,以便直接代替该对象吗?
答案 0 :(得分:0)
一种可能是使现有的remove-method重载一个采用Object参数的方法。在方法主体中,您必须遍历列表的对象并确定所传递对象的索引。然后使用先前确定的索引调用现有的remove-method来删除相应的对象。
以下实现从列表中删除第一个出现的指定对象。返回删除的对象。如果列表中不包含对象,则返回 null 。
public Object remove(Object obj){
int index = -1;
for (int i = 0; i < data.length; i++) {
if (data[i] == obj) {
index = i;
break;
}
}
if (index != -1) {
return remove(index);
}
return null;
}