20

Click here to load reader

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

  • Upload
    gaprot

  • View
    401

  • Download
    7

Embed Size (px)

DESCRIPTION

アップフロンティア・システム開発部スピーチ大会 YSK 氏の発表

Citation preview

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

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

ました

14年2月5日水曜日

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

• javaって機能が多くて全ての機能を把握しきれていない...

• JavaでコーディングしているときはArrayListとHashMapだけ使ってればなんとかなると思っている...

動機

14年2月5日水曜日

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

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日水曜日

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

• 重複した要素が含まれない

• 必ずしも特定の順序で保存されない

Set<E>

SortedSet<E>

• 要素がソートされたセット

14年2月5日水曜日

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

• ハッシュテーブルを使用して実装されたセット

• 要素の追加、削除、検索は高速

HashSet<E>

14年2月5日水曜日

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

• HashSet<E>の拡張

• 内容をイテレーションすると、要素が追加された順番で要素が返される

• 性能はHashSetより若干遅い

LinkedHashSet<E>

14年2月5日水曜日

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

• ツリー構造で内容を保持

• Comparatorインターフェースを指定する事により、任意の順序でソート可能

• 要素の追加、削除、検索はHashSetに比べて遅い

TreeSet<E>

14年2月5日水曜日

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

• 特定の順序で要素が並んでいるコレクション

List<E>

14年2月5日水曜日

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

• 最も広く使われているListクラス

• 最後の位置の要素の追加と削除、特定位置の要素の参照と変更、サイズの取得は高速

• それ以外の操作に要する時間はリストのサイズに比例して長くなる

ArrayList<E>

14年2月5日水曜日

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

• 双方向リンクリストであり、パフォーマンスの特性はArrayListのほぼ逆

• 要素の追加、削除は高速

• 要素の参照に要する時間はリストのサイズに比例する

LinkedList<E>

14年2月5日水曜日

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

• 要素に暗黙の順序を持つコレクションQueue<E>

14年2月5日水曜日

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

• 優先順位に基づいたキューで、キューの先頭はキュー内の最小要素

• 優先順位は要素の自然な順序、もしくは提供されたComparatorにより決定

• イテレーターによる要素の走査では、優先順位に基づいてソートされないので注意

PriorityQueue<E>

14年2月5日水曜日

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

Map<K,V>

SortedMap<K,V>

TreeMap<K,V>

EnumMap<K,V>

WeakHashMap<K,V>

HashMap<K,V>

LinkedHashMap<K,V>

14年2月5日水曜日

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

• キーに関連づけて一つの要素を保存Map<K,V>

SortedMap<K,V>

• キーがソートされたマップ

14年2月5日水曜日

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

• ハッシュテーブルを使用して実装されたMap

• 検索と挿入に比較的時間を要さない

HashMap<K,V>

14年2月5日水曜日

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

• HashMapの拡張

• 内容をイテレーションすると、要素が追加された順番で要素が返される

• 性能はHashMapより多少遅い

LinkedHashMap<K,V>

14年2月5日水曜日

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

• ほぼHashMapのように振る舞う

• キーを参照するのに弱参照(WeakReference)を使用する

• キーにあたるオブジェクトの強参照がなくなると、マップ内からそのキーと値が削除される 

WeakHashMap<K,V>

14年2月5日水曜日

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

• SortedMapを使用し、TreeSetと同じ方法でキーをソートする

• キーと値の組を追加、削除、検索するのはHashMapに比べて遅い

TreeMap<K,V>

14年2月5日水曜日

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

Collentionsクラス

• コレクションに対して操作するstaticのユーティリティメソッドを提供

• 最大値、最小値の探索、ソート、スワップ、シャッフル、要素の出現回数、etc...

14年2月5日水曜日

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

まとめ

• 使用用途に応じて正しいクラスを使用すべき

• 自力実装ではなくユーティリティ系も使用して不要なバグを防ぐ

14年2月5日水曜日