📅  最后修改于: 2023-12-03 15:06:33.104000             🧑  作者: Mango
当需要从Java数组中删除所有特定元素时,一般有两种方法:
下面我们将演示这两种方法的具体实现。
这种方法依赖于Java集合类ArrayList的removeAll()方法。
public static <T> void removeElements(T[] arr, T elem) {
List<T> list = new ArrayList<>(Arrays.asList(arr));
list.removeAll(Collections.singleton(elem));
arr = list.toArray(arr);
}
在这种方法中,我们首先将数组转换为ArrayList,然后使用removeAll()方法删除元素。最后,我们将剩余的元素转换回原始数组。
但是,这种方法并没有直接在原始数组中删除元素,而是创建了一个新的数组。
这种方法使用Java 8提供的Stream API的filter()方法,过滤掉所有特定元素。
public static <T> T[] removeElementsUsingStreams(T[] arr, T elem) {
return Arrays.stream(arr)
.filter(e -> !e.equals(elem))
.toArray(size -> Arrays.copyOf(arr, size));
}
在这种方法中,我们使用Stream API的filter()方法过滤掉所有特定元素,然后使用toArray()方法将结果转换为原始数组的子集。
这种方法直接在原始数组中删除元素,性能会更好。
以上是两种删除Java数组中所有特定元素的方法。第一种方法使用Java集合类ArrayList的removeAll()方法,第二种方法使用Java 8 Stream API的过滤功能。
虽然第一种方法比第二种方法更简单,但是它没有直接在原始数组中删除元素。相比之下,第二种方法在性能上更占优势,但是它需要一些额外的编程工作。因此,我们可以选择根据我们的需求选择适合自己的方法。