ArrayListクラス

広告

まずArrayListクラスを見ていきます。ArrayListクラスは大きさが決まっていない配列と考えて下さい。ArrayListは「java.util.ArrayList」のようにjava.utilクラス内で定義されています。

ArrayListを使うには、まずArraListクラスのオブジェクトを作成します。ArrayListクラスのコンストラクタの1つは下記のようになっています。

初期容量 10 で空のリストを作成します。

大きさは変更可能なのですけど、一応初期サイズとして10個の要素が格納できるArrayListを作成してくれます。このサイズは足りなくなれば自動的に拡張されるのであまり気にする必要はありません。

オブジェクトの作成にはnew演算子を使って作成しますが、以前のバージョンのJavaでは下記のように作っていました。

ArrayList 変数名 = new ArrayList();

J2SE5.0以降は下記のように作成します。

ArrayList<> 変数名 = new ArrayList<>();

クラスの後ろに"<"と">"に囲まれて型を指定する部分があります。見慣れない記述の仕方ですけどJ2SE5.0から新しく導入されたGenerics機能と呼ばれるもので、このArrayListにどのような型の値を格納するのかを指定します。

Generics

この型の部分にはクラス名を指定します。そして要素として格納できる値は、ここで指定したクラスのオブジェクトになります。注意して頂きたいのはStringは大丈夫ですがintやfloatは指定できません。これはStringはStringクラスなのですけどintやfloatはクラスでは無く基本型と呼ばれるものだからです。

そこでint型やfloat型などの基本型を扱いたい場合には、各基本型に対応したクラス(ラッパークラスといいます)が用意されていますので、それを利用します。

対応するクラス   基本型
------------------------------
Boolean          boolean
Character        char
Byte             byte
Short            short
Integer          int
Long             long
Float            float
Doubule          double

例えば整数を格納するArrayListや、Stringを格納するArrayListを作成する場合は下記のようになります。

ArrayList<Integer> array = new ArrayList<Integer>();
ArrayList<String> array = new ArrayList<String>();

値の格納

ArrayListクラスのオブジェクトを作成したら、実際に要素を追加します。ArrayListクラスで用意されている"add"メソッドを使います。

リストの最後に、指定された要素を追加します。 

パラメータ:
  o - リストに追加される要素 
戻り値:
  true (Collection.add の汎用規約どおり)

このメソッドを使うとリストの一番最後にデータが追加されます。

例えば文字列を格納するArrayListを作成して、要素を格納する場合は下記のようになります。

ArrayList<String> array = new ArrayList<String>();

array.add("日本");
array.add("ブラジル");
array.add("イングランド");

上記は実は省略した記述となっており、下記のように書いたものと同等です。

ArrayList<String> array = new ArrayList<String>();

array.add(new String("日本"));
array.add(new String("ブラジル"));
array.add(new String("イングランド"));

このように、指定したクラスのオブジェクトをどんどん格納していきます。配列の場合は決められた数の大きさだけ要素を格納できましたが、コレクションの場合は大きさを自動的に拡張してくれますので、格納する要素の数を気にすることなく追加できます。また格納された要素は、格納された順に0から始まるインデックス番号が付けられます。

次に基本型を使う場合です。前に書いた通り、基本型はそのままでは使えませんので基本型に対応したラッパークラスを使います。例えば整数を格納したい場合には下記のようになります。

ArrayList<Integer> array = new ArrayList<Integer>();

array.add(new Integer(10));
array.add(new Integer(8));
array.add(new Integer(12));

従来はこのように記述していたのですが、こちらもJ2SE5.0からオートボクシング機能というものが出来ました。詳しい説明は省きますが、上記のような記述を簡略化して下記のように記述できるというものです。

ArrayList<Integer> array = new ArrayList<Integer>();

array.add(10);
array.add(8);
array.add(12);

※Stringの場合と似ていますが、意味合いが違います。ラッパークラスと基本型を使う場合に、より簡略化して使えるようにしてくれたものです。

要素の取り出し

次に格納した要素を取り出します。ArrayListクラスで用意されている"get"メソッドを使います。

リスト内の指定された位置にある要素を返します。

パラメータ:
  index - 返される要素のインデックス 
戻り値:
  リスト内の指定された位置にある要素 
例外: 
  IndexOutOfBoundsException - インデックスが範囲外の場合
    (index < 0 || index >= size())

インデックス番号を指定して、その番号に対応した要素を取り出します。

ArrayListクラスの基本機能はこのように要素を格納し、そしてインデックス番号を指定して要素を取り出すことになります。

サンプルプログラム

では実際に試してみましょう。

collectionTest1.java

import java.util.ArrayList;

class collectionTest1{
  public static void main(String args[]){
    ArrayList<String> array = new ArrayList<String>();

    array.add("日本");
    array.add("ブラジル");
    array.add("イングランド");
    array.add("ポルトガル");
    array.add("フランス");

    String country = array.get(2);
    System.out.println(country);
  }
}

上記をコンパイルして実際に実行してみると下記のようになります。

p1

( Written by Tatsuo Ikura )