Java 从数组中删除一个元素的所有出现次数
给定一个数组和一个键,任务是在Java中删除数组中所有指定键的出现。例子。
输入: array = { 3, 9, 2, 3, 1, 7, 2, 3, 5 }, key = 3
输出: [9, 2, 1, 7, 2, 5]
输入: array = { 10, 20, 10, 30, 50, 10 }, key = 10
输出: [20, 30, 50]
使用Arrays.copyOf :
// Java program remove all occurrences
// of an element from Array using naive method
import java.util.Arrays;
class GFG {
// function to remove all occurrences
// of an element from an array
public static int[] removeElements(int[] arr, int key)
{
// Move all other elements to beginning
int index = 0;
for (int i=0; i<arr.length; i++)
if (arr[i] != key)
arr[index++] = arr[i];
// Create a copy of arr[]
return Arrays.copyOf(arr, index);
}
// Driver code
public static void main(String[] args)
{
int[] array = { 3, 9, 2, 3, 1, 7, 2, 3, 5 };
int key = 3;
array = removeElements(array, key);
System.out.println(Arrays.toString(array));
}
}
输出
[9, 2, 1, 7, 2, 5]
时间复杂度: O(n)
空间复杂度: O(n)
使用Java 8 Stream
- 获取数组和键。
- 过滤列表中等于给定键的所有元素
- 将列表转换为数组并返回。
使用Java ArrayList
- 获取数组和键。
- 创建一个空的ArrayList
- 将数组中的所有元素插入到列表中,除了指定的键。
- 将列表转换为数组并返回。
替代方法
- 首先创建一个数组的列表。
- 删除数组中的所有元素到列表中,这些元素是指定的键。
- 将该列表转换回数组并返回。
使用List.removeAll()
- 首先创建一个空的数组列表。
- 将数组中的所有元素插入到列表中
- 删除所有你想删除的元素
- 将列表转换为数组并返回。
使用List.removeIf()
- 首先创建一个空的数组列表。
- 将数组中的所有元素插入列表中
- 使用equals()方法删除所有你想删除的元素
- 将列表转换为数组,并将其返回。