Javaで配列に要素を追加する2つの方法!(配列は固定長)

Java Java

Javaで配列に要素を追加する方法について書きました。
基本的にJavaでは、配列の要素数は固定なので配列を作った後に追加することができません。

今回は下記の方法で、既にある配列の要素を新しく作った配列・リストに入れて使ってみます。

・新しく作った配列に要素を入れる
・リストに要素を入れて使うようにする

最初に配列の定義について書いて、その後に既にある配列要素を使って、新しい配列とリストに入れました。
載せているコードについては、OpenJDKのバージョン19で動作を確認しました。

配列を作る

まず配列を定義するには、下記のように型に「[]」を付けて宣言します。

String[] fruits = new String[3];
fruits[0] = "apple";
fruits[1] = "banana";
fruits[2] = "grape";

fruits変数に、文字列の配列を要素数が「3」つで作りました。
その後に、それぞれの要素番号に対して、要素を入れています。

この配列の宣言と要素の代入は、下記のように1行で行うこともできます。

String[] fruits = {"apple", "banana", "grape"};

要素番号を超えるとエラー

既に作った配列の要素数以上の箇所にアクセスしようとするとエラーになります。
例えば、下記のように3つしか入らない箇所に、4つ目の要素を入れようとします。

String[] fruits = new String[3];
fruits[0] = "apple";
fruits[1] = "banana";
fruits[2] = "grape";
fruits[3] = "peach";

そうすると、下記のようにjava.lang.ArrayIndexOutOfBoundsExceptionエラーが発生します。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3

このように、基本的に配列は要素が固定になります。
動的に要素が増えることがわかっているときにはリスト(ArrayList)を使うのがオススメです。

この内容を踏まえて、追加したいときにはどのようにすればいいか考えましょう。

新しい配列を作って要素を入れる

新しい配列を作って、元の配列から全ての要素を追加した後に、残っている場所に新しい要素を追加することはできます。
例えば、下記のようにします。

String[] fruits = {"apple", "banana", "grape"};
String[] newFruits = new String[fruits.length + 2];

int i = 0;
for (i = 0; i < fruits.length; i++) {
    newFruits[i] = fruits[i];
}

newFruits[i] = "orange";
newFruits[i + 1] = "melon";

for (String fruit : newFruits) {
    System.out.println(fruit);
}

最初にfruits変数に、文字列の配列を3つ要素で作りました。
その次にnewFruits変数に、「fruits配列 + 2」の5つの要素が入るサイズで配列を作成しました。

そして、for文でfruits配列の要素がある間、処理をループしています。
ループ処理の中で、newFruits配列に対して、fruits配列の要素をひとつずつ入れています。

ループを抜けた後に、ループのカウント値の変数iを使って、要素を入れています。(このときiは3です)
その後に「i + 1」で4番目に要素を入れました。

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

apple
banana
grape
orange
melon

元のfruits配列の要素と、新しく追加した2つの要素が全て出力されました。
このように新しく配列を作って、そこに要素を代入していくことはできます。

リストを作って要素を入れる

次はリストを作って、そのリストに対して、配列の要素を追加して使う方法です。

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

public class ArrayAddList {
    public void exec() {
        String[] fruits = {"apple", "banana", "grape"};

        ArrayList<String> fruitsList = new ArrayList<String>(Arrays.asList(fruits));  
        fruitsList.add("peach");
        fruitsList.add("orange");
    }
}

最初にimport文で必要なライブラリを読み込んでいます。(java.util.ArrayList/java.util.Arrays)
execのメソッドに処理を書いています。

fruits変数に、文字列の要素が3つで配列を作りました。
その次の処理で、fruitsList変数に対して、文字列のリストを作っています。
文字列のリストを作るときに「Arrays.asList(fruits)」としているので、既にある配列がリストの要素として追加されます。

そして、リストに対してaddメソッドを使って、要素を2つ追加しました。
プログラムを実行すると、下記のように出力されます。

apple
banana
grape
peach
orange

既にある配列の要素と、新しく追加した要素が全て出力されました。
このように、「配列に要素を追加したい」となったときに、新しくリストを定義して解決する方法もあります。

Javaで配列に要素を追加する方法まとめ

今回はJavaで配列に要素を追加するにはどうするかを書きました。
記事の内容をまとめると、下記のようになります。

・基本的にはJavaで、配列は固定長なので要素が追加できない。(ArrayListを使うべき)
・さらにサイズが大きい新しい配列を作って、既存の配列要素を移して使うことはできた。
・リストを作って、既存の配列要素を移して使うことはできた。

繰り返しになりますが、動的に要素が増えるときにはArrayListを使っていきましょう。

コメント

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