Java ArrayListについて
はじめに
大量のデータを扱う際には配列を使用するのが基本です。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も状況によって使い分けれるとアプリケーションを作る際に役にたつので、すべてを覚えるのは 厳しいですが、有名なものは覚えておいて損はないでしょう。