java - 从 ArrayList 中删除具有特定名称的项目

标签 java android arraylist

我有一个 ArrayList,它有时可以在不同位置包含值“Time (GMT)”、“None”和“No Sensor”。我想删除这些的所有实例,所以我写了这个小 for 循环:

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
    }
}

出于某种原因,这将删除列表开头的“时间(格林威治标准时间)”,以及列表末尾的任何“无”或“无传感器”,但如果我的 ArrayList 有一个“无”或中间任何地方的“无传感器”,都不会被删除。我一辈子都想不通为什么。有什么想法吗?谢谢!

最佳答案

当您删除位于位置 i 的列表项时,以前位于 i + 1 的项目将移动到 i(所有内容都向 i 移动 1 个单元格)。

但是,在您的下一个 for 循环迭代中 i 变为 i + 1 所以基本上您跳过了之前在您的删除操作中从 i + 1 移动到 i 的项目。删除项目时需要递减 i。

关于java - 从 ArrayList 中删除具有特定名称的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211778/

相关文章:

java - Android、Java 上 PEM 文件中的公钥

java - 具有相同值的项目列表

java - Cardview 阴影在旋转或腐烂的 cardview 后重绘自身

android - 如何随机获取 R.raw 字符串

java - 如何将可绘制图像转换为List <ResolveInfo>?

java - 如何在 hibernate 中将列与类属性映射?

java - 如何在mybatis中为Set<MyEnum>指定typeHandler?

android - 使用 Mockito 2 未按需要测试最终类方法

java - 如何使用Java在数据库中存储日期数组?

java - 在 ExpandableListView 中拥有多个 TextView 时遇到问题