list.remove(index)
调用。
这很可疑,因为移除后列表变短,下一个元素被跳过。 简单的修复方法是在移除后减小索引变量,但更稳健的做法可能是通过迭代器或使用 removeIf()
方法 (Java 8 及更高版本) 移除。
如果您不希望 remove()
在循环中被多次调用,不妨在它后面添加 break
。
示例:
public static void main(String[] args) {
process(new ArrayList<>(
Arrays.asList("1", "2", "|", "3", "4")));
}
static void process(List<String> list) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals("|")) {
list.remove(i);
continue;
}
System.out.println(list.get(i));
}
}
代码看起来像是会打印 1 2 3 4
,但实则在输出中将跳过 3
。
2018.2 的新功能