JavaのCollection関連
について整理してみ
ました
14年2月5日水曜日
• javaって機能が多くて全ての機能を把握
しきれていない...
• Javaでコーディングしているときは
ArrayListとHashMapだけ使ってればなん
とかなると思っている...
動機
14年2月5日水曜日
Iterable<E>
Collection<E>
Set<E> Queue<E> List<E>
SortedSet<E>
EnumSet<E>
HashSet<E>
TreeSet<E>
LinkedHashSet<E>
PriorityQueue<E>
ArrayList<E>
LinkedList<E>
14年2月5日水曜日
• 重複した要素が含まれない
• 必ずしも特定の順序で保存されない
Set<E>
SortedSet<E>
• 要素がソートされたセット
14年2月5日水曜日
• ハッシュテーブルを使用して実装され
たセット
• 要素の追加、削除、検索は高速
HashSet<E>
14年2月5日水曜日
• HashSet<E>の拡張
• 内容をイテレーションすると、要素が
追加された順番で要素が返される
• 性能はHashSetより若干遅い
LinkedHashSet<E>
14年2月5日水曜日
• ツリー構造で内容を保持
• Comparatorインターフェースを指定す
る事により、任意の順序でソート可能
• 要素の追加、削除、検索はHashSetに比
べて遅い
TreeSet<E>
14年2月5日水曜日
• 特定の順序で要素が並んでいるコレク
ション
List<E>
14年2月5日水曜日
• 最も広く使われているListクラス
• 最後の位置の要素の追加と削除、特定
位置の要素の参照と変更、サイズの取
得は高速
• それ以外の操作に要する時間はリスト
のサイズに比例して長くなる
ArrayList<E>
14年2月5日水曜日
• 双方向リンクリストであり、パフォー
マンスの特性はArrayListのほぼ逆
• 要素の追加、削除は高速
• 要素の参照に要する時間はリストのサ
イズに比例する
LinkedList<E>
14年2月5日水曜日
• 要素に暗黙の順序を持つコレクション
Queue<E>
14年2月5日水曜日
• 優先順位に基づいたキューで、キュー
の先頭はキュー内の最小要素
• 優先順位は要素の自然な順序、もしく
は提供されたComparatorにより決定
• イテレーターによる要素の走査では、
優先順位に基づいてソートされないの
で注意
PriorityQueue<E>
14年2月5日水曜日
Map<K,V>
SortedMap<K,V>
TreeMap<K,V>
EnumMap<K,V>
WeakHashMap<K,V>
HashMap<K,V>
LinkedHashMap<K,V>
14年2月5日水曜日
• キーに関連づけて一つの要素を保存
Map<K,V>
SortedMap<K,V>
• キーがソートされたマップ
14年2月5日水曜日
• ハッシュテーブルを使用して実装され
たMap
• 検索と挿入に比較的時間を要さない
HashMap<K,V>
14年2月5日水曜日
• HashMapの拡張
• 内容をイテレーションすると、要素が
追加された順番で要素が返される
• 性能はHashMapより多少遅い
LinkedHashMap<K,V>
14年2月5日水曜日
• ほぼHashMapのように振る舞う
• キーを参照するのに弱参照
(WeakReference)を使用する
• キーにあたるオブジェクトの強参照が
なくなると、マップ内からそのキーと
値が削除される 
WeakHashMap<K,V>
14年2月5日水曜日
• SortedMapを使用し、TreeSetと同じ方法
でキーをソートする
• キーと値の組を追加、削除、検索する
のはHashMapに比べて遅い
TreeMap<K,V>
14年2月5日水曜日
Collentionsクラス
• コレクションに対して操作するstaticのユ
ーティリティメソッドを提供
• 最大値、最小値の探索、ソート、スワッ
プ、シャッフル、要素の出現回数、etc...
14年2月5日水曜日
まとめ
• 使用用途に応じて正しいクラスを使用す
べき
• 自力実装ではなくユーティリティ系も使
用して不要なバグを防ぐ
14年2月5日水曜日

Java の Collection 関連について整理してみました