参考図書:





参考webサイト:
Java - TECHSCORE http://www.techscore.com/tech/Java/index/
 

コレクションの分類

Collectionの概要

データ構造とコレクション

データ構造特徴Javaでのコレクションフレームワーク
リスト順序付けられたデータ。要素重複可。途中挿入・取出可。List(LinkedList)
キュー待ち行列。FIFO。要素重複可。途中挿入・取出不可。Queue
スタックLIFO。要素重複可。途中挿入・取出不可。Deque(両端キューで実現)
セット(集合)順序がないデータ。要素重複不可。Set
マップ順序がない一意のキーと値のペアのデータ。キー重複不可。Map(Collectionのサブセットではないことに注意)

コレクションの実装

https://docs.oracle.com/javase/jp/7/technotes/guides/collections/overview.htmlより引用
 

インタフェース サイズ変更可能な配列 リンクリスト ハッシュテーブル バランスツリー ハッシュテーブル + リンクリスト
List ArrayList LinkedList      
Deque ArrayDeque LinkedList      
Set     HashSet TreeSet LinkedHashSet
Map     HashMap TreeMap LinkedHashMap

イテレータ

List list = new ArrayList() {
    {
        add("FIrst");
        add("Secont");
        add("Third");
    }

}

// for-each(for文のシンタックスシュガー
for (String element : list) {
    System.out.println(element);
}

// イテレータの利用
for (Iterator  ite = list.iterator(); ite.hasNext(); ){
    System.out.println(ite.next());
}

// 逆からの読み出し
for (Iterator  ite = list.listIterator(list.size()); ite.hasPrevious(); ){
    System.out.println(ite.previous());
}

ジェネリクス

型安全のための仕組み
List list = new ArrayList();
list.add("abc");
String hoge = list.get(0);
// list.add(98765);  //コンパイル時にエラーとなる

//ジェネリクスを利用しない場合
ArrayList list2 = new ArrayList();
list2.add("abc");
String hoge = (String) list2.get(0);
// list2.add(98765);
// String fuga = (String)list2.get(1); //実行時エラーとなる

//Java SE 7以降の省略記法(ダイヤモンド演算子
List list3 = new ArrayList<>();

//指定は参照型。基本形は不可
// List list = new ArrayList();

//以下はジェネリクスのブログ記載時のために出てしまうため無視してください

何につながるか

ファーストクラスコレクション