在Java中从数组中删除元素

2023/06/09

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类时会发生什么。

给定下面的数组,让我们删除索引2处的元素:

一个简单的方法是将存储在索引2的值替换为存储在索引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);
}

6. 总结

在本文中,我们研究了使用Apache Commons Lang库从数组中删除一个或多个元素的各种方法。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章