Java数组中删除元素
Contents
1. 概述
在本快速教程中,我们将了解使用Apache Commons Lang 库从 Java 数组中删除元素的各种方法。
2. Maven
让我们将commons-lang3 依赖添加到我们项目的pom.xml文件中:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
3. 移除元素
在开始之前,让我们看看当我们从数组中删除一个元素而不使用Apache Commons Lang 库中的ArrayUtils类时会发生什么。
给定下面的数组,让我们删除index 2处的元素:
一种简单的方法是将index 2中存储的值替换为index 3中存储的值,直到我们到达数组的末尾:
请注意,通过以上述方式删除元素,数组的大小将保持不变,并且存储在最后一个索引处的值将为空。由于数组在初始化期间分配了固定的内存大小,因此删除元素不会调整数组的大小。
现在让我们看看使用Apache Commons Lang的ArrayUtils类的remove方法删除元素时的数组表示:
我们可以看到,这里的数组大小在元素被移除后调整为5。remove方法创建一个全新的数组并复制除被删除值之外的所有值。
ArrayUtils类提供了两种从数组中删除元素的方法。接下来让我们看看这些。
4. 使用索引作为输入
我们可以删除元素的第一种方法是使用ArrayUtils#remove通过它的索引:
public int[] removeAnElementWithAGivenIndex(int[] array, int index) {
return ArrayUtils.remove(array, index);
}
另一个变体是removeAll方法,我们可以使用它从数组中删除多个元素,给定它们的索引:
public int[] removeAllElementsWithGivenIndices(int[] array, int... indices) {
return ArrayUtils.removeAll(array, indices);
}
5. 使用元素作为输入
或者,假设我们不知道要删除的索引。在这种情况下,我们可以使用 ArrayUtils#removeElement提供要删除的元素:
public int[] removeFirstOccurrenceOfGivenElement(int[] array, int element) {
return ArrayUtils.removeElement(array, element);
}
这是此方法ArrayUtils#removeElements的另一个有用变体,以防我们要删除多个元素:
public int[] removeAllGivenElements(int[] array, int... elements) {
return ArrayUtils.removeElements(array, elements);
}
有时,我们希望删除给定元素的所有出现。我们可以通过使用ArrayUtils#removeAllOccurences来做到这一点:
public int[] removeAllOccurrencesOfAGivenElement(int[] array, int element) {
return ArrayUtils.removeAllOccurences(array, element);
}