支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

大量のデータを扱う際には配列を使用するのが基本です。ArrayListは配列の大きさがデータサイズに応じて拡張していきます。 java.util.ArrayListクラスはjava.utilパッケージに入っており、importすることで使用できます。

ArrayListの宣言

宣言方法

ArrayList<型> 変数名 = new ArrayList<型>(初期容量); 

ArrayListの後ろにある<型>は、Genericsと呼ばれるものでこの機能でArrayListに格納する型を指定します。 ※IDEを使用していれば指定なしではエラーが発生

宣言例

ArrayList<Integer> al = new ArrayList<Integer>(); //初期容量は指定なしでもOK
ArrayList<Integer> al = new ArrayList<Integer>(5);

例ではIntegerを指定していますが、こうすることでint型の値を格納できるようになります。 <型>の部分にはint,floatのようなプリミティブ型ではなく、Integer,Floatといったオブジェクト型を指定する必要があります。

プリミティブ型
boolean, char, byte, short, int, long, float, double
対応するラッパークラス
Boolean, Character, Byte, Short, Integer, Long, Float, Double

主要メソッド

add:Listに要素を追加
size:List内に格納されている要素数を取得
get:List内の要素を取り出します。
remove:指定された要素をList内から削除
isEmpty:List内に要素があるか確認

使用例

Randomで作成した整数値を偶数奇数に分けるプログラム


import java.util.Random;
import java.util.ArrayList;

public class Exam {
    public static void main(String[] args) {
        int[] data = new int[10];
        Random random = new Random();
        ArrayList<Integer> odd = new ArrayList<Integer>();
        ArrayList<Integer> even = new ArrayList<Integer>();

        for(int i=0; i<data.length; i++){
            data[i] = random.nextInt(100)+1;
            System.out.print(data[i] + " ");
        }
        System.out.println();

        for(int i=0; i<data.length; i++){
            if(data[i]%2 == 0){
                even.add(data[i]);
            }else{
                odd.add(data[i]);
            }
        }

        System.out.print("奇数:");
        for(int i=0; i<odd.size(); i++){
            System.out.print(odd.get(i) + " ");
        }
        System.out.println();
        
        System.out.print("偶数:");
        for(int i=0; i<even.size(); i++){
            System.out.print(even.get(i) + " ");
        }
        
    }
}

実行結果

59 63 20 49 73 94 85 66 25 28 
奇数:59 63 49 73 85 25
偶数:20 94 66 28

上記のプログラムのようにあらかじめ値がどの程度格納するかわからない場合にArrayListは有効です。 しかし今回のプログラムのように乱数値の最大個数が10とわかっているなら偶数奇数の配列の初期値を10に設定 すれば範囲内に収まります。ですが、乱数値の最大個数を10以上に増やしたりする等、変更がある時にその都度設定し直すのは 手間になったりヒューマンエラーの原因になるので、この場合はArrayListを使うのをおすすめします。

まとめ

本記事ではJavaのArrayListにについて書かせていただきました。ArrayListはCollectionという機能の一部でこれ以外にも キーと値をセットにするHashMap(ハッシュマップ)やデータを重複なく格納することができるHashSet(ハッシュセット)と様々な便利 なクラスがあります。またJavaのListクラスも色々種類があります。ArrayListより要素の追加・削除が早く処理できるが要素の検索 が遅いLinkedListというクラスもあり、Listも状況によって使い分けれるとアプリケーションを作る際に役にたつので、すべてを覚えるのは 厳しいですが、有名なものは覚えておいて損はないでしょう。