如何在java中使用索引删除ArrayList()中的字符串元素序列?
我想在我的代码中删除序列字符串元素中的4个索引。 My ArrayList包含多个字符串元素:如何在java中使用索引删除ArrayList()中的字符串元素序列?,java,string,arraylist,indexing,Java,String,Arraylist,Indexing,我想在我的代码中删除序列字符串元素中的4个索引。 My ArrayList包含多个字符串元素: {MyString,MyString1,MyString2,MyString3,MyString4,…,MyString10} 这是我的代码: String removedItem = "MyString"; for (int i = 0; i < myArrayList.size(); i++) { if (myArrayList.get(i).equals(removedIt
{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);
String removedItem=“MyString”;
对于(inti=0;i
我的代码似乎没有按顺序删除前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);
}
}
for(inti=0;i
因为每次删除一个元素时,下一个元素都会向前移动。如果要删除指定的值和下三个元素,可以使用此选项:
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);
}
}
for(inti=0;i
因为每次删除一个元素时,下一个元素都会向前移动。因为每次删除调用时,列表的大小都会减少一个。 要跟踪这一点,可以在remove调用时使用断点 例如,如果使用4个元素初始化ArrayList。 {MyString,MyString1,MyString2,MyString3} 当
i=0时
:
- 调用
MyString将被删除,myArrayList.remove后(0)
的大小将为3{MyString1、MyString2、MyString3}myArrayList
- 调用
这将删除myArrayList.remove后(1)
而不是MyString2
MyString1
{MyString1,MyString3}
myArrayList.remove(2)代码>这将引发异常
您可以使用迭代器并使用
hasNext()
方法安全地检查,也可以使用何先生提供的代码回答并安全地检查elemnt!=删除前为空。因为每次删除调用时,列表的大小将减少一。
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;
}
}
}
要跟踪这一点,可以在remove调用时使用断点
例如,如果使用4个元素初始化ArrayList。
{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)代码>这将引发异常
您可以使用迭代器并使用hasNext()
方法安全地检查,也可以使用何先生提供的代码回答并安全地检查elemnt!=删除前为空。String removedItem=“MyString”;
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;
}
}
}
int=0;
对于(inti=0;i
如果更改myArrayList值和removedItem值,它也会起作用。String removedItem=“MyString”;
int=0;
对于(inti=0;i
如果您更改myArrayList值和removedItem值,它也会起作用。如果您只需要删除4个元素,您可以使用以下命令:int index=myArrayList.indexOf(removedItem);子列表(索引,索引+4).clear()
(如果列表不包含元素,则需要检查索引
是否小于0
)您当前的代码不工作,因为您删除了索引i
处的元素,那么索引较大的所有元素都将下移1
,以填补空白,因此,您只需调用myArrayList.remove(i)
即可使其工作。另一种方法是更改顺序,首先删除i+3
处的元素,然后删除i+2
等。我知道您正在尝试从列表中删除包含“MyString”的字符串?为了避免误解,您希望从列表中删除前四个元素等于removeditem
?如果超过四个,则第五个、第六个等将保留在列表中?您当前正在执行的操作是:如果某个项等于removedItem
,则删除该项及其三个后续项。您甚至不检查这些继承者是否确实存在(如果列表中确实有这些索引)。您当前的代码不会删除这些项,因为它们不等于removedItem
,即“MyString”
,并且列表中的所有项都包含它,但由于附加了数字而不等于它。如果您只需删除4个元素,则可以使用此选项:int index=myArrayList.indexOf(removedItem);子列表(索引,索引+4).clear()
(如果列表不包含元素,则需要检查索引
是否小于0
)当前代码不工作,