用五种方法实现移除数组int[] arr = {1, 2, 3, 4, 5, 1, 9, 4, 12, 67, 1};中1这个元素,返回一个新的数组 (不带有1)。即新数组为int[] arr2 = {2, 3, 4, 5, 9, 4, 12, 67};输出并注释代码
时间: 2023-02-08 07:18:39 浏览: 165
1. 使用 ArrayList
```java
int[] arr = {1, 2, 3, 4, 5, 1, 9, 4, 12, 67, 1};
ArrayList<Integer> list = new ArrayList<>();
for (int i : arr) {
if (i != 1) {
list.add(i);
}
}
int[] arr2 = list.stream().mapToInt(i -> i).toArray();
```
2. 使用 LinkedList
```java
int[] arr = {1, 2, 3, 4, 5, 1, 9, 4, 12, 67, 1};
LinkedList<Integer> list = new LinkedList<>();
for (int i : arr) {
if (i != 1) {
list.add(i);
}
}
int[] arr2 = new int[list.size()];
int index = 0;
for (int i : list) {
arr2[index++] = i;
}
```
3. 使用双指针
```java
int[] arr = {1, 2, 3, 4, 5, 1, 9, 4, 12, 67, 1};
int slow = 0, fast = 0;
while (fast < arr.length) {
if (arr[fast] != 1) {
arr[slow++] = arr[fast];
}
fast++;
}
int[] arr2 = Arrays.copyOf(arr, slow);
```
4. 使用 Stream API
```java
int[] arr = {1, 2, 3, 4, 5, 1, 9, 4, 12, 67, 1};
int[] arr2 = Arrays.stream(arr).filter(i -> i != 1).toArray();
```
5. 使用 foreach + lambda
```java
int[] arr = {1, 2, 3, 4, 5, 1, 9, 4, 12, 67, 1};
ArrayList<Integer> list = new ArrayList<>();
Arrays.stream(arr).forEach(i -> {
if (i != 1) {
list.add(i);
}
});
int[] arr2 = list.stream().mapToInt(i -> i).toArray();
```
上面的五种方法均可实现移除数组中的元素,返回一个新的数组。其中第一种和第五种方法使用了 ArrayList 和 Stream API,第二种和第三种方法使用了 LinkedList 和双指针,第四种使用了 Stream API。
阅读全文