コレクションフレームワーク
これまでデータを格納する手段として、変数や配列を使用してきました。
変数は格納するデータ型を宣言して値を1つ格納するもので、配列は宣言したデータ型の複数のデータを格納するものです。
配列は1種類のデータ型のデータのみ格納できます。
それでは、異なるデータ型のデータをまとめて格納するにはどうしたらよいでしょうか。
ArrayListを思い出してください。 phoeducation.work
ArrayListはコレクションと呼ばれる特殊な配列で、異なるデータ型のオブジェクトをまとめて管理できるものでした。
このArrayListは実はコレクションフレームワークという考え方にのっとって定義されたデータを保管しておくための仕組みの1つです。
ArrayListは複数のオブジェクト(参照型)を格納することができ、基本データ型を格納する際にはラッパークラスオブジェクトに変換する必要があったことを思い出してください。
つまりコレクションはオブジェクト(参照型)のみを保管できます。
コレクションフレームワークとは、複数のオブジェクトをまとめて取り扱うための統一した考え方のことです。
コレクションフレームワークに沿って、用途に応じたクラスやインターフェースが用意されており、一貫性のある管理や操作を行うことができます。
コレクションフレームワークを用いると、複数のオブジェクトをまとめて格納したり、追加、削除をすることができます。
コレクションとは、コレクションフレームワークに基づいて提供されたクラスやインターフェースといった、オブジェクトのことです。
エレメントとは、コレクションに格納する1つ1つのオブジェクト(要素)のことです。
コレクションは、エレメントの格納方法や検索方法の違いなどによって、List、Set、Map、Queueの4つに分類されます。
下図に示すとおり、コレクションフレームワークでは、MAP以外を表すインターフェースが、すべてのコレクションの階層の一番上のCollectionインターフェースをもとに作成されています。
それぞれの特徴を表にまとめておきます。
それぞれオブジェクトの重複と順序をどのように管理しているか、またCollectionインターフェースを実装しているかを、抑えておきましょう。
コレクションインターフェースと実装クラス
コレクションを使用するにはインスタンス化をする必要がありますが、インターフェースはそれ自体をインスタンス化することはできず、実装したクラスをインスタンス化して使用します。
Collectionインターフェースを実装したSetインターフェース、Listインターフェース、Mapインターフェース(これだけはCollectionインターフェースをimplementsしていない)、Queueインターフェースがあり、それぞれのインターフェースがさらに下図のような具象クラスを持っています。
【Collectionインターフェースを実装したクラス群】
【Mapインターフェースを実装したクラス群】
コレクションを使用するには、これらの具象クラスをインスタンス化します。
- インターフェース名<型> オブジェクト名 = new 実装クラス名<型>()
- 実装クラス名<型> オブジェクト名 = new 実装クラス名<型> ()
(例)Listlist = new ArrayList ( );
ArrayListのところでも学習しましたが、コレクションは異なる型のオブジェクトを格納できるため、思わぬエラーが発生しないとも限りません。
そこで格納できるオブジェクト型を限定するのが、ジェネリックでしたね。
上の例では、ArrayListにはString型のデータのみ格納できることを表しています。
次の記事から各インターフェースの特徴とその実装クラスの使い方を見ていきます。
各インターフェースには、それぞれ「格納する値が重複してもよいかどうか」 「格納されている値の順番はどのようになっているか」といった特徴があります。
どのインターフェースが良い、悪いではなく、「どんな場面でどのインターフェースを使用するとよいか」を考えながら学習を進めていきましょう。
「コレクション Part2」へ続きます。
phoeducation.work
参考図書
LINE公式アカウント
仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】