关于List.remove在for循环中出现问题的解决方案
2017-06-10 21:12
344 查看
for(Menu item:sub){ if(!subIds.contains(item.getId())){ sub.remove(item); } } 此时会出现异常,示例说明: 2,3,4 当删除2时,元素向后移动,执行i=i+1,从 0 1 2 变成 2 3 ,当删除3,元素向后移动,变成 3 4 ,此时会发现找不到4就结束循环 解决办法: 1.倒序删除: 2 1 0 -> 2 1 -> 2 刚好能够删除 2.迭代删除 Iterator<Menu> it = sub.iterator(); while(it.hasNext()){ Menu item = (Menu)it.next(); if(!subIds.contains(item.getId())){ it.remove(); } }
相关文章推荐
- 关于List.remove在for循环中出现问题的解决方案
- 关于List.remove在for循环中出现问题的解决方案
- 关于js加载iframe出现空白问题的解决方案
- 关于出现List的java.util.ConcurrentModificationException异常问题的解决
- jsp关于include html、jsp等文件出现乱码问题的解决方案
- 关于出现WARNING: unable to write jarlist cache file ...\appcompat_v7\bin\jarlist.cache 问题详解
- 关于自定义迭代器类出现的问题可能解决方案
- 关于Java设置环境变量后的调试出现问题的解决方案
- 关于android中出现"ADB server didn't ACK"这个问题解决方案
- 关于Eclipse调试Hadoop所出现的一些问题及解决方案
- 【转】关于AES256算法java端加密,ios端解密出现无法解密问题的解决方案
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- 关于Devexpress xtraGrid中数字字段删除数字后出现输入字符串格式不正确问题的解决方案
- 关于VS2010中一打字,换行,拖控件便出现卡死的问题的解决方案
- 关于以前应用程序运行出现配置错误的问题的解决方案
- 关于PC套件显示红外连接出现问题而导致连接不上的解决方案(zz)
- 关于PC套件显示红外连接出现问题而导致连接不上的解决方案(zz)
- 关于自定义BaseAdapter listAdapter时,出现超低级问题
- 关于List的一个小问题——remove()函数
- 关于MFC中数据库操作中遇到的问题:Microsoft C++ 在xxx内存处出现问题_com_error的另一解决方案