SlideShare a Scribd company logo
1 of 20
Download to read offline
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日水曜日

More Related Content

Viewers also liked

Javaバイトコード入門
Javaバイトコード入門Javaバイトコード入門
Javaバイトコード入門Kota Mizushima
 
とある情報の超整理術
とある情報の超整理術とある情報の超整理術
とある情報の超整理術Masahito Zembutsu
 
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Norito Agetsuma
 
負荷試験入門公開資料 201611
負荷試験入門公開資料 201611負荷試験入門公開資料 201611
負荷試験入門公開資料 201611樽八 仲川
 
クラウド時代のネットワーク再入門
クラウド時代のネットワーク再入門クラウド時代のネットワーク再入門
クラウド時代のネットワーク再入門Naoto MATSUMOTO
 
データベース入門2
データベース入門2データベース入門2
データベース入門2tadaaki hayashi
 
5分でわかる静的解析入門
5分でわかる静的解析入門5分でわかる静的解析入門
5分でわかる静的解析入門Kenta USAMI
 
GTDなメール整理術
GTDなメール整理術GTDなメール整理術
GTDなメール整理術Naoto Azami
 
アイデアを発展・整理するための便利なアプリとその使い方
アイデアを発展・整理するための便利なアプリとその使い方アイデアを発展・整理するための便利なアプリとその使い方
アイデアを発展・整理するための便利なアプリとその使い方祐磨 堀
 
5S(整理・整頓・清掃・清潔・躾)をA4一枚で理解するシート
5S(整理・整頓・清掃・清潔・躾)をA4一枚で理解するシート5S(整理・整頓・清掃・清潔・躾)をA4一枚で理解するシート
5S(整理・整頓・清掃・清潔・躾)をA4一枚で理解するシートTaku Aoyama
 
Severe ARDSの初期治療
Severe ARDSの初期治療Severe ARDSの初期治療
Severe ARDSの初期治療清水 真人
 
閉域網接続の技術入門
閉域網接続の技術入門閉域網接続の技術入門
閉域網接続の技術入門Masayuki Kobayashi
 

Viewers also liked (20)

SSL入門
SSL入門SSL入門
SSL入門
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
Javaバイトコード入門
Javaバイトコード入門Javaバイトコード入門
Javaバイトコード入門
 
HTTP/2入門
HTTP/2入門HTTP/2入門
HTTP/2入門
 
とある情報の超整理術
とある情報の超整理術とある情報の超整理術
とある情報の超整理術
 
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
Apache Solr 検索エンジン入門
Apache Solr 検索エンジン入門Apache Solr 検索エンジン入門
Apache Solr 検索エンジン入門
 
負荷試験入門公開資料 201611
負荷試験入門公開資料 201611負荷試験入門公開資料 201611
負荷試験入門公開資料 201611
 
Swagger 入門
Swagger 入門Swagger 入門
Swagger 入門
 
クラウド時代のネットワーク再入門
クラウド時代のネットワーク再入門クラウド時代のネットワーク再入門
クラウド時代のネットワーク再入門
 
ネットワーク構築訓練 入門
ネットワーク構築訓練 入門ネットワーク構築訓練 入門
ネットワーク構築訓練 入門
 
データベース入門2
データベース入門2データベース入門2
データベース入門2
 
5分でわかる静的解析入門
5分でわかる静的解析入門5分でわかる静的解析入門
5分でわかる静的解析入門
 
GTDなメール整理術
GTDなメール整理術GTDなメール整理術
GTDなメール整理術
 
アイデアを発展・整理するための便利なアプリとその使い方
アイデアを発展・整理するための便利なアプリとその使い方アイデアを発展・整理するための便利なアプリとその使い方
アイデアを発展・整理するための便利なアプリとその使い方
 
5S(整理・整頓・清掃・清潔・躾)をA4一枚で理解するシート
5S(整理・整頓・清掃・清潔・躾)をA4一枚で理解するシート5S(整理・整頓・清掃・清潔・躾)をA4一枚で理解するシート
5S(整理・整頓・清掃・清潔・躾)をA4一枚で理解するシート
 
Severe ARDSの初期治療
Severe ARDSの初期治療Severe ARDSの初期治療
Severe ARDSの初期治療
 
閉域網接続の技術入門
閉域網接続の技術入門閉域網接続の技術入門
閉域網接続の技術入門
 
OpenStack入門 2016/06/27
OpenStack入門 2016/06/27OpenStack入門 2016/06/27
OpenStack入門 2016/06/27
 

More from Gaprot

AR開発高速化!「CFA」作りました!
AR開発高速化!「CFA」作りました!AR開発高速化!「CFA」作りました!
AR開発高速化!「CFA」作りました!Gaprot
 
Unity + iOS/Android VR ことはじめ
Unity + iOS/Android VR ことはじめUnity + iOS/Android VR ことはじめ
Unity + iOS/Android VR ことはじめGaprot
 
1201 ギャップロ軍団企画書
1201 ギャップロ軍団企画書1201 ギャップロ軍団企画書
1201 ギャップロ軍団企画書Gaprot
 
Speech Framework
Speech FrameworkSpeech Framework
Speech FrameworkGaprot
 
SiriKit iOS10
SiriKit iOS10SiriKit iOS10
SiriKit iOS10Gaprot
 
Proactive Suggestions
Proactive SuggestionsProactive Suggestions
Proactive SuggestionsGaprot
 
New Notification API in iOS 10
New Notification API in iOS 10New Notification API in iOS 10
New Notification API in iOS 10Gaprot
 
iOS 10 new Camera
iOS 10 new CameraiOS 10 new Camera
iOS 10 new CameraGaprot
 
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させるHTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させるGaprot
 
Aiマッシュアップ委員会 仕様説明資料
Aiマッシュアップ委員会 仕様説明資料Aiマッシュアップ委員会 仕様説明資料
Aiマッシュアップ委員会 仕様説明資料Gaprot
 
GoF のデザインパターンじゃないけど、よくあるパターン
GoF のデザインパターンじゃないけど、よくあるパターンGoF のデザインパターンじゃないけど、よくあるパターン
GoF のデザインパターンじゃないけど、よくあるパターンGaprot
 
Salmon Hunt
Salmon HuntSalmon Hunt
Salmon HuntGaprot
 
SONY Camera Remote API
SONY Camera Remote APISONY Camera Remote API
SONY Camera Remote APIGaprot
 
「バグあるある」と「仕様変更あるある」一挙大放出SP!
「バグあるある」と「仕様変更あるある」一挙大放出SP!「バグあるある」と「仕様変更あるある」一挙大放出SP!
「バグあるある」と「仕様変更あるある」一挙大放出SP!Gaprot
 

More from Gaprot (14)

AR開発高速化!「CFA」作りました!
AR開発高速化!「CFA」作りました!AR開発高速化!「CFA」作りました!
AR開発高速化!「CFA」作りました!
 
Unity + iOS/Android VR ことはじめ
Unity + iOS/Android VR ことはじめUnity + iOS/Android VR ことはじめ
Unity + iOS/Android VR ことはじめ
 
1201 ギャップロ軍団企画書
1201 ギャップロ軍団企画書1201 ギャップロ軍団企画書
1201 ギャップロ軍団企画書
 
Speech Framework
Speech FrameworkSpeech Framework
Speech Framework
 
SiriKit iOS10
SiriKit iOS10SiriKit iOS10
SiriKit iOS10
 
Proactive Suggestions
Proactive SuggestionsProactive Suggestions
Proactive Suggestions
 
New Notification API in iOS 10
New Notification API in iOS 10New Notification API in iOS 10
New Notification API in iOS 10
 
iOS 10 new Camera
iOS 10 new CameraiOS 10 new Camera
iOS 10 new Camera
 
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させるHTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
 
Aiマッシュアップ委員会 仕様説明資料
Aiマッシュアップ委員会 仕様説明資料Aiマッシュアップ委員会 仕様説明資料
Aiマッシュアップ委員会 仕様説明資料
 
GoF のデザインパターンじゃないけど、よくあるパターン
GoF のデザインパターンじゃないけど、よくあるパターンGoF のデザインパターンじゃないけど、よくあるパターン
GoF のデザインパターンじゃないけど、よくあるパターン
 
Salmon Hunt
Salmon HuntSalmon Hunt
Salmon Hunt
 
SONY Camera Remote API
SONY Camera Remote APISONY Camera Remote API
SONY Camera Remote API
 
「バグあるある」と「仕様変更あるある」一挙大放出SP!
「バグあるある」と「仕様変更あるある」一挙大放出SP!「バグあるある」と「仕様変更あるある」一挙大放出SP!
「バグあるある」と「仕様変更あるある」一挙大放出SP!
 

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