この記事の内容は、私が過去に(Javaを触っていた頃)調べまとめていた内容なので、
もしかしたら、内容に少しおかしなところもあるかもしれないですが、
よくまとめられていたので公開します。(自画自賛)
定義方法
配列
String sample[] = { “1” ,”2” ,”3” ,”4” ,”5" };
String sample[] = new String[5];
ArrayList
ArrayList List<String> sample = new ArrayList<>(Arrays.asList(“1” ,”2” ,”3” ,”4” ,”5"));
List<String> sample = new ArrayList<String>;
要素数が決まっているか
配列の場合は要素数をあらかじめ決めなければならないため、要素数がわかっている場合に利用する。
それに比べ、ArrayListの場合、要素の追加や削除が自由に行え扱いやすい。
( Arrays.asListの場合は、全くの別物のため要素の追加も削除も行えない。(変更は可) )
処理速度を比較
https://yujisoftware.hatenablog.com/entry/20090928/1254154372を参考に処理速度の比較を行った。
配列の方が若干処理速度は速いため、要素数が決まっている場合は配列のがいいかも
要素へアクセスする際の速度
配列の場合は、指定した添字数に直接飛んでいくのに対し、リストの場合は先頭から順番に一致する場所を探すため、アクセスに時間がかかってしまう。
要素の挿入、削除
配列で要素を途中に挿入、削除する場合、元あった要素の場所をずらす必要がある。
イメージ図
あ い う →え →お ↑か(挿入) |
リストの場合は、要素の挿入や削除をした際、前へと自動的に配列の要素がずれてくれるため、便利。
System.out.printしてみる
配列の場合はそのままだとハッシュコードが表示されてしまうため、Arrays.toString(配列名)を使って一度変換してやる必要がある。
また、セッションに入れた場合、取り出すときは以下の手順で取り出す(配列)
String A[] = (String[])session.get(配列をプットしたセッション名);
String B = Arrays.toString(A);
System.out.print(B);
asListについても仕様はArrayListと一緒
結論
あらかじめ配列数が決まっている場合は、配列を使った方が、処理速度がわずかに速い。
しかし、リストの方が利用しやすく、処理速度に大きな差はないため、特殊な場合(要素数の削除によるずれ等)以外はリストを使用した方が良いかもしれない。