簡體   English   中英

Android比較字符串與數組並刪除數組索引值

[英]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方法。

  1. 刪除索引處的元素
  2. 刪除給定的元素

您需要調用第二個返回元素的方法。 因此,您可以使用“贊”,

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM