Javaで配列の要素を削除する方法!(配列は固定長)

Java Java

Javaで配列の要素を削除する方法について書いています。
配列は固定長なので、少し工夫しないと配列の要素を減らすことができません。

下記の操作をして、不要な要素を無くした配列を作ります。

・新しい配列を作って追加する
・配列をリスト変換して削除する

動的に要素数が増えたり、減ったりすることがわかっているときには、リスト(ArrayList)を使うようにしましょう。
載せているコードについては、OpenJDKのバージョン19で動作を確認しました。

新しい配列に不要な要素を除いて追加する

配列の要素を除いて、新しい配列に要素を詰め直すことで、元の配列の要素を削除したように扱うことができます。
例えば、下記のように使うことができます。

String[] fruits = {"apple", "banana", "grape", "orange"};
String[] newFruits = new String[fruits.length - 1];

// 新しい配列に要素を詰め直し
int index = 0;
for (String fruit : fruits) {
    if (fruit == "grape") {
        continue;
    }

    newFruits[index] =  fruit;
    index++;
}

// 新しい配列の要素を出力する
for (String fruit : newFruits) {
    System.out.println(fruit);
}

最初にfruits変数に、4つの文字列で配列を作成しました。

その次の処理で、要素を詰め直すための配列を、元の[配列の要素数 – 1]の大きさで作りました。
そのため、newFruits配列には3つの要素を入れることができます。

次のfor文で、元の配列を要素がある間、ループ処理を行なっています。
for文の中の処理では、文字列の「grape」だったときにはcontinueで処理をスキップしています。

それ以外の要素はnewFruits配列に入れるようにしました。
これで、fruits配列から「grape」要素を除いたnewFruits配列ができます。

最後にnewFruits配列の要素を出力しています。
プログラムを実行すると、下記のように出力されました。

apple
banana
orange

このように元の配列から、要素を削除したような振る舞いで、新しい配列を作ることができました。

配列をリストに変換して削除する

配列をリストに変換して、削除することもできます。
例えば、下記のようにして削除できます。

import java.util.ArrayList;
import java.util.Arrays;

public class ArrayDelete {
    public void exec() {
        String[] fruits = {"apple", "banana", "grape", "orange"};
        ArrayList<String> fruitsList = new ArrayList<String>(Arrays.asList(fruits));

        fruitsList.remove("banana");

        String[] newFruits = (String[]) fruitsList.toArray(new String[]{});
        for (String fruit : newFruits) {
            System.out.println(fruit);
        }
    }
}

最初にリストを作るためにjava.util.ArrayListの読み込んでいます。
次にリストを変換するためにjava.util.Arraysを読み込みました。

ArrayDeleteクラスのexecメソッドで、変換して削除し、配列に戻す処理を行なっています。

メソッドの中では、最初に4つの文字列でfruits配列を作成しています。
次の処理でArrays.asListを使って、配列からリストに変換し、その結果をfruitsListリストで受け取っています。
その次に、fruitsListリストからremoveメソッドを呼んで、リストの要素(banana)を削除しました。

そしてfruitsListリストからtoArrayメソッドを呼ぶことで、もう一度、配列に変換し直しています。
newFruits配列で要素を受け取って、要素数分ループして出力しています。

プログラムを実行すると、下記のように出力されました。

apple
grape
orange

削除した「banana」を除いた配列を作成することができ、残った要素が全て出力されました。

配列の要素を削除する方法まとめ

今回はJavaで配列の要素を削除する方法について書きました。
記事の内容をまとめると、下記のようになります。

・配列は固定長なので、削除することができない。
・新しい配列に、不要な要素を除いた要素を入れることで、いらない要素を削除した配列ができた。
・配列をリストに変換して、removeメソッドを使うことで削除できた。

動的に要素が変わるようなときには、リスト(ArrayList)を使っていきましょう。

コメント

タイトルとURLをコピーしました