从Java中的Array中删除所有出现的元素
给定一个数组和一个键,任务是从Java中的数组中删除所有出现的指定键。
例子:
Input: array = { 3, 9, 2, 3, 1, 7, 2, 3, 5 }, key = 3
Output: [9, 2, 1, 7, 2, 5]
Input: array = { 10, 20, 10, 30, 50, 10 }, key = 10
Output: [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
输出:[9, 2, 1, 7, 2, 5]
使用Java 8 流:
- 获取数组和密钥。
- 过滤列表中等于给定键的所有元素
- 将列表转换回数组并返回。
下面是上述方法的实现:
// Java program remove all occurrences // of an element from Array // Using Java 8 Stream API 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) { // return a new array except given key return Arrays.stream(arr) .filter(val -> val != key) .toArray(); } // Driver code public static void main(String[] args) { // Get the array int[] array = { 3, 9, 2, 3, 1, 7, 2, 3, 5 }; // Get the key int key = 3; // Remove the key array = removeElements(array, key); // Print the modified array System.out.println(Arrays.toString(array)); } }
输出:[9, 2, 1, 7, 2, 5]
使用Java数组列表:
- 获取数组和密钥。
- 创建一个空的 ArrayList
- 将数组中的所有元素插入到列表中,除了指定的键
- 将列表转换回数组并返回。
下面是上述方法的实现:
程序:
// Java program remove all occurrences // of an element from Array // Using Java ArrayLists import java.util.*; class GFG { // function to remove all occurrences // of an element from an array public static int[] removeElements(int[] arr, int key) { // create an empty ArrayList List
result = new ArrayList (); // insert all elements from the array into the list // except the specified key for (int i : arr) { if (i != key) { result.add(i); } } // convert the list back to an array and return it return result.stream() .mapToInt(Integer::intValue) .toArray(); } // Driver code public static void main(String[] args) { // Get the array int[] array = { 3, 9, 2, 3, 1, 7, 2, 3, 5 }; // Get the key int key = 3; // Remove the key array = removeElements(array, key); // Print the modified array System.out.println(Arrays.toString(array)); } } 输出:[9, 2, 1, 7, 2, 5]
替代方法:
- 首先创建一个数组列表。
- 将数组的所有元素删除到列表中,其为指定键。
- 将列表转换回数组并返回它。
下面是上述方法的实现:
程序:
// Java program remove all occurrences // of an element from Array // Using Java List import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; class GFG { // function to remove all occurrences // of an element from an array public static int[] removeElements(int[] arr, int key) { // Create a List // Insert all element of array into List List
result = IntStream.of(arr) // IntStream .boxed() .collect(Collectors.toList()); // check every element if found then remove for (int i = 0; i < result.size(); i++) { if (result.get(i).equals(key)) { result.remove(i--); } } // convert the list back to an array and return it return result.stream() .mapToInt(Integer::intValue) .toArray(); } // Driver code public static void main(String[] args) { // Get the array int[] array = { 3, 9, 2, 3, 1, 7, 2, 3, 5 }; // Get the key int key = 3; // Remove the key array = removeElements(array, key); // Print the modified array System.out.println(Arrays.toString(array)); } } 输出:[9, 2, 1, 7, 2, 5]
使用 List.removeAll():
- 首先创建一个空的数组列表。
- 将数组的所有元素插入到列表中
- 删除所有要删除的元素
- 将列表转换回数组并返回它。
下面是上述方法的实现:
程序:
// Java program remove all occurrences // of an element from Array import java.util.*; import java.util.stream.*; class GFG { // function to remove all occurrences of key public static int[] removeElements(int[] arr, int key) { // Create a List // Insert all element of array into List List
result = IntStream.of(arr) // IntStream .boxed() .collect(Collectors.toList()); // remove all specific values and // an immutable set containing only the specified object result.removeAll(Collections.singleton(key)); // sequential Stream over the elements in this collection // and return a new array return result.stream() .mapToInt(Integer::intValue) .toArray(); } // Driver code public static void main(String[] args) { // Get the array int[] array = { 3, 9, 2, 3, 1, 7, 2, 3, 5 }; // Get the key int key = 3; // Remove the key array = removeElements(array, key); // Print the modified array System.out.println(Arrays.toString(array)); } } 输出:[9, 2, 1, 7, 2, 5]
使用 List.removeIf():
- 首先创建一个空的数组列表。
- 将数组的所有元素插入到列表中
- 使用 equals() 方法删除所有要删除的元素
- 将列表转换回数组并返回它。
下面是上述方法的实现:
程序:
// Java program remove all occurrences // of an element from Array import java.util.*; import java.util.stream.*; class GFG { // function to remove all occurrences of key public static int[] removeElements(int[] arr, int key) { // Create a List // Insert all element of array into List List
result = IntStream.of(arr) // IntStream .boxed() .collect(Collectors.toList()); // remove all specific values if match result.removeIf(n -> (n.equals(key))); // convert list into new array and return return result.stream() .mapToInt(Integer::intValue) .toArray(); } // Driver code public static void main(String[] args) { // Get the array int[] array = { 3, 9, 2, 3, 1, 7, 2, 3, 5 }; // Get the key int key = 3; // Remove the key array = removeElements(array, key); // Print the modified array System.out.println(Arrays.toString(array)); } } 输出:[9, 2, 1, 7, 2, 5]