JavaIT

【Java】 配列型とリスト型の違いを比較する

この記事の内容は、私が過去に(Javaを触っていた頃)調べまとめていた内容なので、 もしかしたら、内容に少しおかしなところもあるかもしれないですが、 よくまとめられていたので公開します。(自画自賛)

定義方法

配列  String sample[] = { “1” ,”2” ,”3” ,”4” ,”5” }; String sample[] = new String[5]; ArrayList ArrayList List sample = new ArrayList<>(Arrays.asList(“1” ,”2” ,”3” ,”4” ,”5”)); List sample = new ArrayList;

要素数が決まっているか

配列の場合は要素数をあらかじめ決めなければならないため、要素数がわかっている場合に利用する。 それに比べ、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と一緒

結論

あらかじめ配列数が決まっている場合は、配列を使った方が、処理速度がわずかに速い。 しかし、リストの方が利用しやすく、処理速度に大きな差はないため、特殊な場合(要素数の削除によるずれ等)以外はリストを使用した方が良いかもしれない。