ArrayList
は配列(array)を保持するクラスです。
コンストラクタに何も指定しない場合、配列の長さの初期値は10になります。
10個以上の要素を格納しようとした場合、その度に「サイズの大きいリストを生成し、値をコピーする」手間が生じるため、性能は劣化します。
初めから格納する要素数の目安がついている場合は、コンストラクタで初期値を指定してリストを生成するのが望ましいです。
宣言する方法は以下のとおりです。
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を配列に変換するには、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がオススメ!同僚に差をつけよう!