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