Collectionsの目的別まとめ
便利だけど見落としがちなjava.util.Collectionsの全メソッドを目的別にまとめる。
Java | Java SE 8 |
CollectionsはCollectionフレームワークに関連したユーティリティメソッドを集めたクラス。これらのメソッドを目的別にまとめる。
検索・カウント・操作
目的 | メソッド |
---|---|
最大の要素を返す |
max(Collection<? extends T> coll) |
最小の要素を返す |
min(Collection<? extends T> coll) |
共通の要素が存在しない場合、 |
|
指定要素のカウント |
|
配列のaddAll |
Comparator
Java8以降であればComparator#reversed()などを利用した方がよい。
目的 | メソッド |
---|---|
自然順序づけの逆順コンパレータ |
|
指定されたcompartorの逆順コンパレータ |
List専用
検索
binarySearch()は昇順にしておかないと結果が保証されないので注意。
目的 | メソッド |
---|---|
二分探索 |
binarySearch(List<? extends Comparable<? super T» list, T key) |
リストが最初に出現した |
|
リストが最後に出現した |
操作
目的 | メソッド |
---|---|
リストのコピーを作る |
|
リスト要素をすべて置き換える |
|
リストを並び替える |
sort(List<T> list) |
リスト内に出現する指定された値を |
|
リストを逆順にする |
|
リストを回転する |
|
リストをシャッフルする |
|
リスト要素のスワップをする |
ファクトリ
空のコレクションの生成
staticフィールドにも空コレクションが存在するが、メソッドだとジェネリクスの警告が出ないのでこちらを使う。
目的 | メソッド |
---|---|
空のコレクションを生成 |
emptyList() |
要素が1つのコレクションの生成
目的 | メソッド |
---|---|
要素が1つのList |
|
要素が1つのSet |
|
要素が1つのMap |
特殊な変換(生成)
目的 | メソッド |
---|---|
Collection→Enumeration |
|
Enumeration→List |
|
マップに連動するセット |
|
n個のコピーで構成される不変のリスト |
|
Deque→Queue |
デコレーション
変更不可能なコレクション
要素を変更するようなメソッドを呼び出すとUnsupportedOperationExceptionがスローされるようになる。一切要素を変更してほしくない場合などに利用。
型チェックされるコレクション
要素を変更するようなメソッド(例えばadd())では必ず型チェックが行われるようになる。通常ジェネリックスによりコンパイルエラーになるが無理矢理挿入することも可能。よって、絶対に違う型の要素を入れてほしくない場合や検査のために利用。
同期化コレクション
各メソッドでsynchornizedを利用した同期が行われるようになる。基本的には並列コレクションを使った方がよい。
Appendix A: 参考
Appendix B: 改訂履歴
-
v1.0, 2015-04-10: 初稿