首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除arrayList中的项目:尝试从不存在的索引中删除?

删除arrayList中的项目:尝试从不存在的索引中删除?
EN

Stack Overflow用户
提问于 2016-02-29 12:03:40
回答 1查看 52关注 0票数 1

我正在实现for-loop中的逻辑,该逻辑将从犬舍对象中删除状态为“接受”的任何狗对象。

注意,一只犬类可以有一张列有许多狗的名单。

循环:

代码语言:javascript
复制
allDogsInKennel = kennel.getDogsList();
for (int i = 0; i < allDogsInKennel.size(); i++) {
   //delete any dog object with a status of Accepted
   if (allDogsInKennel.get(i).getStatus() == "ACCEPTED") {
     kennel.removeDog(allDogsInKennel.get(i));
   }
}

removeDog方法

代码语言:javascript
复制
 public void removeDog(Dog d) {
        this.dogList.remove(d);
 }

我遇到的问题是,清单上所有的6狗都应该被删除,但目前只有3被删除。

示例:

代码语言:javascript
复制
original size of list = 6 items

Item removed from index 0 = 5 items

Item removed from index 1 = 4 items

item removed from index 2 = 3 items

现在,在下一次迭代中,由于index 3条件的原因,循环尝试从i++中移除,但是数组将只转到index 2,因为它现在只有索引处的3项:

代码语言:javascript
复制
0, 1, 2

如何更改上面的逻辑以确保从数组中删除所有的项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-29 12:04:45

当您从列表中删除一个对象时,您可以添加I;

代码语言:javascript
复制
for (int i = 0; i < allDogsInKennel.size(); i++) {

    //delete any dog object with a status of Accepted
    if (allDogsInKennel.get(i).getStatus().equals("ACCEPTED")) {
        kennel.removeDog(allDogsInKennel.get(i));
        i--   
     }
}

让我们假设您有一个数组列表,并且有字符串obj1、obj2、obj3

代码语言:javascript
复制
ArrayList<String> lst = new ArrayList<String>();
lst.add("obj1");
lst.add("obj2");
lst.add("obj3");

for (int i = 0; i < lst.size(); i++) {
     String str = lst.get(i);
     lst.remove(str); //list size decrease, 
     //so when you remove an object with index 0, your new list has obj2(at index 0) and obj3(at index 1) 
     //when i is increased, it will escape obj2, it never check it or access it.
     //i--; //open to give a try
}

for (int i = 0; i < lst.size(); i++) {
    System.out.println(lst.get(i)); //will print obj2
}

预期是删除列表中的所有项,因此我必须添加i--在删除方法之后添加。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35699076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档