arraylist删除元素与iterator删除元素的区别
时间: 2024-06-08 16:08:01 浏览: 9
ArrayList 是 Java 中的一个动态数组,可以存储任意类型的元素。删除 ArrayList 中的元素有多种方式,其中两种常用的方式是使用索引删除和使用迭代器删除。
1. 使用索引删除元素:
当你知道要删除的元素的索引位置时,可以使用 ArrayList 的 `remove` 方法来删除元素。例如,假设我们有一个 ArrayList `list`,要删除索引为 `index` 的元素,可以使用以下代码:
```java
list.remove(index);
```
这种方法会将索引位置后面的元素向前移动一个位置,因此会导致后面元素的索引值减一。
2. 使用迭代器删除元素:
迭代器是一个对象,用于遍历和操作集合中的元素。ArrayList 提供了获取迭代器的方法 `iterator()`。通过迭代器可以安全地删除集合中的元素,而不会引发并发修改异常。
```java
Iterator<T> iterator = list.iterator();
while (iterator.hasNext()) {
T element = iterator.next();
if (满足某个条件) {
iterator.remove(); // 删除当前迭代到的元素
}
}
```
迭代器的 `remove` 方法会删除上一次调用 `next` 方法返回的元素。这种方式在遍历过程中删除元素时是安全的,并且不会导致索引变化问题。
总结:
- 使用索引删除元素适用于已知要删除元素的位置。
- 使用迭代器删除元素适用于在遍历过程中删除元素,并且不会引发并发修改异常。