1

この記事の目次



1.  コレクションとは


  • コレクションとは大きさが可変で、複数のデータをひとつのユニットに集めて、扱うための抽象データ型です。
  • 抽象データ型はデータに可能な操作群、つまり「使い方」によって記述されたデータ型のことです。
  • コレクションでは大きさが可変なので、配列と違って、最初に大きさを宣言しなくてもいいというメリットです。
  • コレクションにできないこと:インスタンスでないものは格納できないことです。つまり、基本データ型の情報を格納することができません。例えば、ArrayListにint型のデータを格納することできず、Integerインスタンスに変換してから格納する必要があります。
  • 2.  コレクションフレームワーク


    コレクションはJAVAにおいてコレクションフレームワークとして提供されています。

    コレクションフレームワークは「仕様」を表すコレクションインタフェースと「実装」としての実装クラスからなる。

     ●  コレクションインタフェース

    コレクションは複数のデータを扱うための抽象データ型で、その記述は操作群の仕様として記述することができます。JAVAでは操作群をインタフェースとソテ記述します。

    JAVAのコレクションインタフェースはList Interface、Set、SortedSet、Map、 SortedMap、Queue、Dequeがありますが、開発現場ではQueue、Dequeがあまり使用されていません。

    インタフェース 記述
    List 格納される要素において重複を許可し、順番を持つコレクションです。インデックス番号で要素を識別し、前後に要素をたどったり、要素を消したり追加したりできます。
    Set 格納される要素において重複を許可しないコレクションです。要素が重複しているかどうかの判断は利用者が与える比較メソッドにより行います。
    SortedSet Setの特徴を継承し自然順あるいはしてしたメソッドに基づき要素をソートすることができます。
    Map 1つのキー値を1つの要素にマッピングうる。キーの重複は許さない。
    SortedMap Mapの特徴を継承し自然順あるいは指定したメソッドに基づき要素をソートすることができます。

     ●  コレクションクラス

    「List」「Set」「Map」はインターフェースとして用意されていますが、実際に使用する際には、これらのインターフェースを実装したクラスを使用します。

    以下はそれぞれのインタンフェスにおいてコレクションクラスの特徴です。

    インタフェース コレクションクラス 記述
    List ArrayList 配列による実装で、要素の重複を許可する
    LinkedList 双方向連結リストによる実装で、要素の重複を許可する
    Set HashSet HashMapを利用した実装で、重複を許可しません
    LinkedHashSet 予測可能な繰り返し順序をもつ、ハッシュ表と連結リストによる実装
    SortedSet TreeSet TreeMapを利用した実装で、要素はデフォルトで昇順に並べられ、重複を許可されません
    Map HashMap ハッシュテーブルに基づく実装で、順序を保証しません
    LinkHashMap 予想可能な繰り返し順序をもち、ハッシュ表と連結リストによる実装です
    SortedMap TreeMap Red-Black Treeに基づく実装です。要素ははデフォルトで昇順に並べられます

     ●  総称性

    JAVAでの総称性はコレクションフレームワークのインタフェースおよび実装クラスにおける型引数として利用できます。

    インタフェースの場合: コレクションインタフェース名<要素のデータ型名またはクラス名>
    実装クラスの場合:   コレクション実装クラス名<要素のデータ型またはクラス名>
    //インタフェースの場合: 
    List< Integer >
    //実装クラスの場合: 
    ArrayList< Integer >

    3.  まとめ


    この記事ではJavaのコレクションについてお伝えしてきました。色々紹介しましたが、特に覚えて欲しいのはコレクションの各インタフェース名とそれぞれのインタフェースの各コレクションクラス名ぐらい覚えてくださればいいです。役割、使い方などは次の記事から詳しく紹介します。

    広告