配列の限界とコレクション・フレームワーク
Javaでは、多数の値を管理するのに配列を用いますが、この配列、いささか柔軟性にかけるところがあります。例えば、要素数を途中で増減したりできませんし、決まったタイプの値しか保管しておけません。
こういうときに用いられるのが、「コレクション・フレームワーク」と呼ばれるものです。これは、多数のオブジェクトを扱うために用意されたクラス群です。さまざまな特徴を持ったクラスがあり、用途に応じて利用できるようになっています。
コレクション・フレームワークのクラスは、大きく整理すると、以下のようなものがあります。
・リスト――オブジェクトを順序付けて管理するものです。保管した並び順通りにオブジェクトが整理されます。
・マップ――「キー」と呼ばれる値にオブジェクトを関連付けて管理します。それぞれのキーに1つずつオブジェクトが保管されます。キーは、同じものが複数存在しないことが保障されています。常に、ある値のキーは1つあるか、存在しないかです。
・セット――重複要素のないオブジェクトを管理するものです。この中には、同じオブジェクトが複数存在しないことが保証されています。
・イテレータ――オブジェクトを反復処理するためのものです。これ自体をオブジェクトの管理に使うというより、必要に応じて、コレクション・クラスからイテレータを取り出し、反復処理したりして利用します。
ずいぶんといろいろなものがあることがわかりますね。それぞれ特徴がありますが、すぐにすべてのものを理解する必要はありません。まずは基本となるリストのクラス「ArrayList」から使っていきましょう。
なお、コレクション関係のクラスは、java.utilというパッケージに用意されています。ですから、これらのクラスを利用する際には、このパッケージのクラスをimportするのを忘れないようにしましょう。
ArrayListを使う
コレクションでもっとも多用されるのは、オブジェクトを順番に管理するリストのクラスでしょう。リストでもっとも一般的に使われるのは「ArrayList」というクラスです。これは、さまざまなオブジェクトを入れ、順に取り出したりすることができます。
package jp.allabout;
import java.util.*;
public class SampleApp {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("Hello");
list.add(123);
list.add(false);
for(Object obj:list){
System.out.println(obj);
}
}
}
テキスト、整数、真偽値をArrayListに収めて出力する。 |
ここでは、まず「new ArrayList」でArrayListインスタンスを作成していますね。そして、その後の「add」というメソッドを使い、"Hello"、123、falseといった値をArrayListに収めています。addは、引数に指定したオブジェクトを自身に追加する働きをします。
そして繰り返し部分でオブジェクトを取り出しています。ここではfor(Object obj:list)という形でArrayListの中のオブジェクトを順にobjに代入しています。ArrayListなどのコレクション・フレームワークのクラスは、このように「オブジェクトを順に取り出すためのfor」で使うことができるのです。この他、ArrayListでは「get( 番号 )」という形で、インデックス番号を指定してオブジェクトを取り出すメソッドも用意されています。