[英]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.