Javaの配列から要素を削除する

1. 概要

このクイックチュートリアルでは、https://commons.apache.org/proper/commons-lang/ [Apache Commons Lang]ライブラリを使用して、Javaの配列から要素を削除するさまざまな方法について学習します。 。

2. メーベン

https://search.maven.org/search?q=g:org.apache.commons%20AND%20a:commons-lang3[the _commons-lang3_dependency]をプロジェクトの_pom.xml_ファイルに追加しましょう。
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>

3. 要素を削除する

始める前に、Apache Commons Langライブラリの_ArrayUtils_クラスを使用せずに配列から要素を削除するとどうなるかを見てみましょう。
以下の配列を考えて、_ * index 2 * _の要素を削除しましょう。
link:/uploads/Array-simple-300x75-100x25.png%20100w []
これを行う簡単な方法は、配列の最後に到達するまで、_index 2_に格納されている値を_index 3_に格納されている値に置き換えることです。
link:/uploads/Array-rm-e1561592406558-100x18.png%20100w []
上記の方法で要素を削除すると、*配列のサイズは同じまま*となり、最後のインデックスに格納された値は空になることに注意してください。 配列には初​​期化中に割り当てられた*固定メモリサイズ*があるため、要素を削除しても配列のサイズは調整されません。
次に、Apache Commons Langの_ArrayUtils_クラスから_remove_メソッドを使用して要素を削除するときの配列表現を見てみましょう。
link:/uploads/Array-rm-common-e1561592423646-100x19.png%20100w []
ご覧のとおり、ここでの配列サイズは、要素が削除された後に5に調整されます。 _remove_メソッドは、新しい配列を作成し、削除される値を除くすべての値をコピーします。
_ArrayUtils_クラスは、配列から要素を削除する2つの方法を提供します。 次にこれらを見てみましょう。

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. 結論

この記事では、https://commons.apache.org/proper/commons-lang/ [Apache Commons Lang]ライブラリを使用して、配列から要素を削除するさまざまな方法を検討しました。
エッジケースの詳細については、このチュートリアルのソースコードと関連するユニットテストをご覧くださいhttps://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-arrays- 2 [GitHubで利用可能]。