为了账号安全,请及时绑定邮箱和手机立即绑定

Android 将字符串与数组进行比较并删除数组索引值

Android 将字符串与数组进行比较并删除数组索引值

PIPIONE 2021-09-15 14:35:57
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异常。
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

发生这种情况是因为当您删除一个元素时,列表中某些元素的索引会发生变化。例如,如果您的列表有五个元素 (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);

            }

        }

这样,您只会更改已检查过的元素的索引。


查看完整回答
反对 回复 2021-09-15
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

因为有两个版本的remove方法。

  1. 删除索引处的元素

  2. 删除给定元素

您需要调用返回元素的第二个方法。所以,你可以使用 Like,

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.

      }

}


查看完整回答
反对 回复 2021-09-15
  • 2 回答
  • 0 关注
  • 296 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信