删除线性表中所有值为x的元素java
时间: 2024-09-30 13:13:04 浏览: 47
在Java中,如果你想从一个线性表(如数组、ArrayList、LinkedList等)删除所有值为`x`的元素,你可以使用以下几种方法:
1. **数组:** 如果使用的是固定大小的数组,可以遍历数组,将每个元素替换为其后的元素,然后减小数组长度。
```java
public void removeElements(int[] arr, int x) {
for (int i = 0; i < arr.length; ) {
if (arr[i] == x) {
System.arraycopy(arr, i + 1, arr, i, arr.length - i - 1);
arr[arr.length - 1] = 0; // 或者设置为null,取决于是否允许空位
arr.length--;
} else {
i++;
}
}
}
```
2. **ArrayList:** 使用`removeAll()`方法配合自定义迭代器,移除所有`x`。
```java
import java.util.ArrayList;
import java.util.Iterator;
public void removeElements(ArrayList<Integer> list, int x) {
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
if (iterator.next().equals(x)) {
iterator.remove();
}
}
}
```
3. **LinkedList:** 遍历链表并删除匹配项。
```java
import java.util.LinkedList;
public void removeElements(LinkedList<Integer> list, int x) {
LinkedList<Integer> newList = new LinkedList<>();
for (int element : list) {
if (element != x) {
newList.add(element);
}
}
list.clear(); // 清空原列表
list.addAll(newList); // 将新链表添加回原列表
}
```
阅读全文