【はじめてのJava】Collection【いろいろなクラス編】
はじめてのJava
このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。
今回の記事では、Javaで複数のオブジェクトをひとまとまりにして扱うために用意された「Collection」インタフェースと、
そのインタフェースを実装して作成されている様々なクラスを解説します。
目次
Collection
プログラムの中で、複数のデータを一度に扱いたいような場合があります。
例えば、社員1人分のデータをEmployeeクラスのオブジェクトとして定義しているとします。
社員1人のデータは1つのオブジェクトとして取得しますが、ここで全社員検索を行うようなメソッドを作成したい場合はどうなるでしょうか。
この場合、メソッドの戻り値としてEmployeeオブジェクトを複数、一度に返す処理を行うことになります。
複数のデータをひとまとめにして扱うためには、配列を利用することで実現可能になります。
配列には、データのサイズを固定して扱う「固定長配列」とデータのサイズを動的に変更することができる「可変長配列」の2種類がありました。
その中のいわゆる「可変長配列」がコレクションという機能です。
コレクションの機能を提供するためのクラスは、用途に応じていくつも定義されています。
コレクション機能を提供するクラスは大きな分類として「Collection」インタフェースから派生するものと「Map」インタフェースから派生するものに分けられます。
「Collection」インタフェースから継承されるものには、「List」「Set」「Queue」の3つのインターフェースがあり、それぞれを実装したクラスが複数定義されています。
以前の記事で解説した「ArrayList」クラスはこの中の「List」インタフェースを実装して作成されたクラスの1つです。
それぞれのコレクションの特徴と代表的なクラスを解説していきます。
List
Listインタフェースを実装して作成されるクラスの特徴は、1つのオブジェクトの中に持つデータを「インデックス」と呼ばれる番号で、順序付けを行って管理することです。
インデックスによってデータの識別が可能ですので、1つのオブジェクトに入るデータの重複が許可されています。
代表的なクラスは「ArrayList」「LinkedList」「Vector」などです。
Set
Setインタフェースを実装して作成されるクラスの特徴は、1つのオブジェクトの中に持つデータの重複を許可しないということです。
Setでは、データが順不同で管理されていて、クラスによって保持するデータをソートするかどうかも異なっています。
代表的なクラスは「HashSet」「LinkedHashSet」「TreeSet」などです。
Queue
Queue(キュー)インタフェースを実装して作成されるクラスの特徴は、格納したデータを入れた順番に取り出さなければいけないということです。
このような方式を「FIFO方式(First In First Out)」と呼びます。
代表的なクラスは「PriorityQueue」などです。
また、FIFOに加えて、最後に格納したデータから順に取り出す「LIFO(Last In First Out)方式」の特徴を持つ、「Deque(デック)」インタフェースと呼ばれるインタフェースやクラスも存在します。
いろいろなクラス編・次回の内容
今回はCollectionインタフェースを実装したクラスを解説しました。
次回は、Mapインタフェースを実装したクラスを解説します。
初めてのJavaシリーズの目次はこちら
いろいろなクラス編の記事一覧はこちら