Categories: Java

【Java入門】ArrayListの宣言とインスタンス生成

ArrayListは配列(array)を保持するクラスです。
コンストラクタに何も指定しない場合、配列の長さの初期値は10になります。
10個以上の要素を格納しようとした場合、その度に「サイズの大きいリストを生成し、値をコピーする」手間が生じるため、性能は劣化します。
初めから格納する要素数の目安がついている場合は、コンストラクタで初期値を指定してリストを生成するのが望ましいです。

ArrayListの宣言

宣言する方法は以下のとおりです。

フィールドに宣言する場合

Java

List<String> list;

ローカル変数として宣言する場合

ローカル変数は初期化しないとコンパイルエラーになってしまうので、宣言時に生成する必要がない場合はnullを設定しておきます。

Java

List<String> list = null;

要素が空のリストを生成する

String型のリストを生成するには以下のように記述します。

Java

List<String> list = new ArrayList<>();

asListで読み取り専用のリストを作る

asListを使用してリストの初期化・生成を行うと、要素の追加/変更/削除ができない読み取り専用のリストになります。

Java

List<String> list = Arrays.asList("いちご","りんご","みかん");

addで要素を追加して実行すると以下のようにUnsupportedOperationExceptionが発生します。

Java

List<String> list = Arrays.asList("いちご","りんご","みかん");
list.add("ぶどう");

for (String str:list){
    System.out.println(str);
}

実行結果

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at test.Convert.main(test.java:2)

要素を変更したい場合

asListで初期化したリストに対して要素の追加/変更/削除を行いたい場合は、
ArrayListのインスタンス生成時にコンストラクタの引数としてasListを渡します。
こうすると、addで要素を追加して実行してもエラーが発生することはありません。

Java

List<String> list = new ArrayList<>(Arrays.asList("いちご","りんご","みかん"));
list.add("ぶどう");

for (String str:list){
    System.out.println(str);
}

実行結果

いちご
りんご
みかん
ぶどう

ArrayListを配列に変換する

ArrayListを配列に変換するには、Collectionインターフェースで宣言されているtoArrayメソッドを使用します。

Java

//ArrayList生成
List<String> list = new ArrayList<>(Arrays.asList("いちご","りんご","みかん"));
list.add("ぶどう");

//ArrayList→配列に変換
String[] array = list.toArray(new String[list.size()]);

//配列を出力
for (String str:array){
    System.out.println(str);
}

実行結果

いちご
りんご
みかん
ぶどう

以上で記事の解説はお終い!

もっとJavaやSpringを勉強したい方にはUdemyがオススメ!同僚に差をつけよう!

issiki_wp