Nic*_*ick 1 java android arraylist
我有一个ArrayList,有时在各个位置都包含值"Time(GMT)","None"和"No Sensor".我想删除所有这些实例,所以我写了这个小循环:
for(int i = 0; i < trackedFieldsMod.size(); i++ ) {
if(trackedFieldsMod.get(i).equalsIgnoreCase("Time (GMT)") || trackedFieldsMod.get(i).equalsIgnoreCase("None") || trackedFieldsMod.get(i).equalsIgnoreCase("No Sensor")) {
trackedFieldsMod.remove(i); //Don't let users find average/mean/etc for irrelevant fields
}
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这将删除列表开头的"时间(GMT)",以及列表末尾的任何"无"或"无传感器",但如果我的ArrayList具有"无"或"无传感器" "在任何地方的中间,他们都没有被删除.我不能为我的生活找出原因.有什么想法吗?谢谢!
当你在位置i删除一个列表项时,以前在i + 1的项目将被移动到i(一切都向i移动1个单元格).
但是,在你的下一个for循环迭代中,我变成i + 1,所以基本上你正在跳过那个先前在你的删除操作上从i + 1移动到i的项目.在删除项目时需要减少i.
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |