[英]Android compare string with array and remove array index values
if(responseArr.size()!=0) {
for(int i=0;i<responseArr.size();i++) {
if(responseArr.get(i).equals("busy")) {
stylistId.remove(i);
}
}
}
如果數組中的任何值包含字符串busy ,我想從該位置的stylistId數組中刪除該值。 在上面的代碼中, responseArr數組和stylistId數組的大小相同。
當我嘗試從stylistId刪除值時,第一次執行循環時,它可以正常工作。 當循環第二次執行時,出現indexOutOfBound異常。
發生這種情況是因為刪除元素時列表中某些元素的索引發生了變化。 例如,如果列表中有五個元素(0、1、2、3、4),而您刪除了元素2,則元素3和4將被重新編號,以便之后具有(0、1、2、3)。
有許多解決此問題的方法,但是一種方法就是簡單地向后遍歷responseArr
。
for(int i= responseArr.size() - 1;i >= 0; i--){
if(responseArr.get(i).equals("busy")){
stylistId.remove(i);
}
}
這樣,您將僅更改已檢查的元素的索引。
因為有兩種版本的remove
方法。
您需要調用第二個返回元素的方法。 因此,您可以使用“贊”,
for (int i = 0; i < responseArr.size(); i++) {
if (responseArr.get(i).equals("busy")) {
int id = stylistId.remove(i); //use your type instead of int.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.