はじめに
たくさんのオブジェクトを管理するのに、皆さんならどういうものを利用するでしょうか。多くの人が思い浮かべるのは「配列」でしょう。しかし配列はなかなか融通が利かない代物です。それよりもはるかに便利なものがJavaには用意されています。それが「コレクション・フレームワーク」と呼ばれるクラス群です。今回は、この中の主なものについて使い方を説明しましょう。
対象読者
- Javaに興味はある、けれどプログラミング経験がない、という人。
- Javaに興味はある、けれど何から手をつければいいかわからない、という人。
- Javaに興味はない、でも何でもいいからプログラミングをしたい、という人。
これまでの記事
- Java入門 (1) - まずはここから始めよう
- Java入門 (2) - 値と制御構文
- Java入門 (3) - クラスとインスタンス
- Java入門 (4) - Swingを使ったGUIプログラミング
- Java入門 (5) - Swingにおけるイベント処理
- Java入門 (6) - テキストファイルアクセスと例外処理
コレクションとは?
プログラミングでは、多数の値をまとめて操作するということがよくあります。こうしたときに用いられるのが配列です。しかし、Javaの配列は正直言ってあまり使い勝手がよいものでもありません。あらかじめ決められた数の要素を保管するものを作成しておかねばならず、後で追加したりすることもできませんし、そもそも同じ種類の値しかまとめることができません。
こうした点を考え、多数の値(オブジェクト)をまとめて柔軟に扱うことを考えて用意されたのが「コレクション・フレームワーク」と呼ばれるものです。これは1つのクラスだけでなく、多くのクラスとインターフェースから構成されています。さまざまな性質を備えたクラスがあり、必要に応じてその中から最適なものを選んで利用します。
実際に、Javadocなどのドキュメントで、コレクション・フレームワーク関係のクラスについて調べてみたことのある人なら分かることでしょうが、「似たようなクラスがたくさんある」ように見えてしまい、一体どれをどう使えばいいのか、慣れないうちは途方に暮れてしまいます。そこで、まず最初に用意されているクラス類をその性質から整理していくことにしましょう。
コレクション・フレームワークのクラス類は、整理すると以下のような性質から分類できます。
順序付けられている
これは、収められた要素の順番が保障されているかどうか、ということです。決まった順番どおりに常にオブジェクトが取り出されるようになっています。多数のオブジェクトを順番に処理するようなときに用いられ、この性質を持ったものは「List」と呼ばれるクラスとして用意されています。
キーによって管理されている
ただ値だけがずらっと収められているのでなく、それぞれに名前(キー)をつけて管理するタイプのものです。名前を使っていつでも必要な要素だけをピックアップして取り出すことができます。この種のものは、「Map」と呼ばれるクラスとして用意されています。
値がユニークである
ユニークというのは「すべての値が異なる(同じ値が複数存在しない)」ということです。やや特殊な性質ですが、同じ値がいくつも保管されないので、用途によっては非常に重宝するでしょう。これは「Set」と呼ばれるクラスとして用意されています。
この「List」「Map」「Set」の3つが、コレクションの基本といってよいでしょう。ここまで便宜上、「クラス」と呼びましたが、実際には「インターフェース」として用意されています。インターフェースというのは、前にイベントリスナーの説明(第5回参照)で触れましたが、さまざまな仕様だけを記述した特殊なクラスのことです。実際に利用する際は、これらのインターフェースを組み込んだクラスが別途用意されているので、こちらを使用します。では、使い方を見ていきましょう。