我们知道ArrayList的底层是用数组实现的,如果你删除了其中一个元素,那么后边的元素都会向前移动。所以在遍历时如果删除元素,就要小心了。
第一种方法,用数组下标进行遍历,如果需要删除元素,我们从后向前遍历,这样不论有没有元素删除,我们都不会遗漏未被遍历的元素。
第二种方法,我们使用迭代器。
Iterator itr = list.iterator();
while(itr.hasNext()) {
if(...) {
itr.remove();
}
}
总之,如果你的删除操作比较多的话,建议使用LinkedList。
原文:http://blog.csdn.net/hongchangfirst/article/details/49780389
作者:hongchangfirst
hongchangfirst的主页:http://blog.csdn.net/hongchangfirst
本文探讨了在使用ArrayList时删除元素可能带来的数组移动问题,并提出了一种从后向前遍历的方法来避免遗漏未被遍历的元素。此外,文章还推荐在频繁删除元素的情况下使用LinkedList作为替代方案。

1万+

被折叠的 条评论
为什么被折叠?



