繁体   English   中英

如何使用java中的索引删除()ArrayList()中的一系列String元素?

[英]How to remove() a sequence of String elements in an ArrayList() using indices in java?

我想在我的代码中删除序列字符串元素中的 4 个索引。 我的 ArrayList 包含多个 String 元素:

{MyString,MyString1,MyString2,MyString3,MyString4,...., MyString10}

这是我的代码:

String removedItem = "MyString";

for (int i = 0; i < myArrayList.size(); i++) {  
    if (myArrayList.get(i).equals(removedItem)) {
        myArrayList.remove(i);
        myArrayList.remove(i+1);
        myArrayList.remove(i+2);
        myArrayList.remove(i+3);
    }
}

System.out.println(myArrayList);

我的代码似乎没有按顺序删除前 4 个索引。 我做错了什么,我该如何解决? 任何帮助将不胜感激!

如果你想删除指定的值和接下来的三个元素。你可以使用这个:

for (int i = 0; i < myArrayList.size(); i++) {  
    if (myArrayList.get(i).equals(removedItem)) {
        myArrayList.remove(i);
        myArrayList.remove(i);
        myArrayList.remove(i);
        myArrayList.remove(i);
    }
}

因为每删除一个元素,下一个元素就会向前移动。

因为每次删除调用时,列表的大小都会减少一。 要跟踪这一点,您可以在删除调用时使用断点。

例如,如果您的 ArrayList 使用 4 个元素进行初始化。 {MyString,MyString1,MyString2,MyString3}

i = 0

  • 调用myArrayList.remove(0); MyString 将被删除, myArrayList的大小将为 3 {MyString1,MyString2,MyString3}。

  • 调用myArrayList.remove(1); 这将删除MyString2而不是MyString1 {MyString1,MyString3}

  • myArrayList.remove(2); 这将抛出异常

您可以使用 Iterator 并安全地检查hasNext()方法或使用 Mr.HE answer 提供的代码并在删除之前安全地检查该 elemnt elemnt != null

String removedItem = "MyString";

int remove = 0;
for (int i = 0; i < myArrayList.size(); i++) {  
    if (myArrayList.get(i).contains(removedItem)) {
        myArrayList.remove(i);
        i--;
        remove++;
        if(remove == 4) {
            System.out.println(myArrayList);
            return;
        }
    }

}

如果您更改 myArrayList 值和 removedItem 值,它也将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM