从arraylist Java中删除对象
这里我创建了一个delete方法,它将搜索对象数组并删除所选对象从arraylist Java中删除对象,java,Java,这里我创建了一个delete方法,它将搜索对象数组并删除所选对象 public class DogList { private int numItems; private DogItem[] dogListArray; private int position; private String name; DogList () { numItems=0; position = 0; dogListArray
public class DogList {
private int numItems;
private DogItem[] dogListArray;
private int position;
private String name;
DogList () {
numItems=0;
position = 0;
dogListArray = new DogItem[20];
}
DogList(String name) {
this.name = name;
}
public void deleteItem(DogList gi) {
int i = 0;
while( (i < numItems) && (gi != dogListArray[i]) ) {
i++;
}
if(i == numItems) {
// Throw exception if there is not matching Item
throw new NoSuchElementException("That item does not exists");
}
int pos = i;
while(pos < numItems -1 ) {
dogListArray[pos] = dogListArray[pos + 1];
pos++;
}
numItems --;
}
公共类狗名单{
私有内部网络;
私有DogItem[]dogListArray;
私人职位;
私有字符串名称;
狗名单(){
numItems=0;
位置=0;
dogListArray=新的DogItem[20];
}
狗列表(字符串名称){
this.name=名称;
}
公共无效删除项(狗列表gi){
int i=0;
而((i
我不明白为什么在第一个while循环中,(gi!=dogListArray[I])
抛出一个错误:“不兼容的操作数类型DogList和DogItem”
任何帮助都会很好。
代码相当长,因此如果您想查看任何部分,我都会编辑并显示所需内容。我假设
dogListArray
是一个DogItem[]
,使dogListArray[i]
成为DogItem
。我假设gi
也意味着是一个DogItem
而不是DogItem
在一个单独但仍然相关的注释中,您应该使用
equals
方法,而不是=
或!=
,来比较对象。请参阅此方面的说明。是否应该是gi[i]!=dogListArray[i]
?看起来您的数组dogListArray
包含DogItem
类的对象。当您试图将其与DogList
进行比较时,它返回一个错误。如果您共享类的完整实现,这将非常有用。您可能还应该使用equals
方法来比较对象。如果您使用==
或!=
您将比较参考文献。有关详细信息,请参阅。将DogList更改为DogItem修复了错误@Darshan Mehta。当您说使用equals方法@Bill the Lizard时,您在哪里暗示我使用它?我猜用类似的东西替换拳头。while(!=gi.equal(dogListArray[i])
??