这个小小的烦恼导致我失去了一个小时的睡眠,我不明白为什么.
我有一个ArrayList数组,我想迭代并有条件地删除项目.这是我的第一次尝试:
for (int i = 0; i < array.size(); i++) {
if (array.get(i) == conditionMet) array.remove(i);
}
Run Code Online (Sandbox Code Playgroud)
那没用.以下做了:
for (Iterator<T> i = array.iterator(); i.hasNext();) {
if (i.next() == conditionMet) i.remove();
}
Run Code Online (Sandbox Code Playgroud)
为什么?
你没有具体说明它没有工作,但是当你遍历ArrayList的for循环和当前索引处删除元素i,集合的大小和指数的后续元素,两者的变化这是你大概是什么没想到.
从以下文档ArrayList#remove(int index):
删除此列表中指定位置的元素.将任何后续元素向左移位(从索引中减去一个).
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |