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
)を使っていきましょう。
コメント