我有一个ArrayList
假设list
,它有8项AH,现在我想删除存储在int数组中的1,3,5位置项,list
我该怎么做.
我正试图这样做
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
list.add("G");
list.add("H");
int i[] = {1,3,5};
for (int j = 0; j < i.length; j++) {
list.remove(i[j]);
}
Run Code Online (Sandbox Code Playgroud)
但是在第一个项目删除后,数组的位置被更改,并且在下一次迭代中,它会删除错误的元素或给出异常.
Ale*_*ood 132
在这种特定情况下,您应该按降序删除元素.第一个索引5
,然后3
,然后1
.这将从列表中删除元素而没有不良副作用.
for (int j = i.length-1; j >= 0; j--) {
list.remove(i[j]);
}
Run Code Online (Sandbox Code Playgroud)
Jai*_*dra 30
您可以删除ArrayList
使用中的元素ListIterator
,
ListIterator listIterator = List_Of_Array.listIterator();
/* Use void remove() method of ListIterator to remove an element from List.
It removes the last element returned by next or previous methods.
*/
listIterator.next();
//remove element returned by last next method
listIterator.remove();//remove element at 1st position
listIterator.next();
listIterator.next();
listIterator.remove();//remove element at 3rd position
listIterator.next();
listIterator.next();
listIterator.remove();//remove element at 5th position
Run Code Online (Sandbox Code Playgroud)
小智 10
public void DeleteUserIMP(UserIMP useriamp) {
synchronized (ListUserIMP) {
if (ListUserIMP.isEmpty()) {
System.out.println("user is empty");
} else {
Iterator<UserIMP> it = ListUserIMP.iterator();
while (it.hasNext()) {
UserIMP user = it.next();
if (useriamp.getMoblieNumber().equals(user.getMoblieNumber())) {
it.remove();
System.out.println("remove it");
}
}
// ListUserIMP.remove(useriamp);
System.out.println(" this user removed");
}
Constants.RESULT_FOR_REGISTRATION = Constants.MESSAGE_OK;
// System.out.println("This user Deleted " + Constants.MESSAGE_OK);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
正如先前所说
iterator.remove()
Run Code Online (Sandbox Code Playgroud)
可能是循环期间删除列表项的唯一安全方法.
要更深入地了解使用迭代器删除项目,请尝试查看此主题
归档时间: |
|
查看次数: |
474622 次 |
最近记录: |