未分類

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

投稿日:

この記事の内容は、私が過去に(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と一緒

 

 

結論

あらかじめ配列数が決まっている場合は、配列を使った方が、処理速度がわずかに速い。

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

 

 

-未分類

Copyright© エンジニアの階段 , 2019 All Rights Reserved Powered by STINGER.