JavaのCollectionsクラス徹底解説:便利すぎるメソッド集!
今回は、JavaのCollections(コレクションズ)クラスについて、エンジニア初心者の方にもわかりやすく解説していきます。
「ArrayListは知ってるけど、Collectionsって何?」
「CollectionsとCollectionって違うの?」
こんな疑問を持っている方は多いはず。Collectionsクラスは、ListやSetなどを便利に操作できる“道具箱”のような存在なんです。
CollectionsとCollectionの違い
まず、名前が似ているこの2つの違いからハッキリさせましょう。
名前 | 種類 | 説明 |
---|---|---|
Collection | インターフェース | List, Setなどの親的存在 |
Collections | クラス | ListやSetを操作するためのユーティリティクラス |
つまり、CollectionsはCollection系のクラスに魔法をかけるヘルパーだと思ってください。
Collectionsの代表的なメソッドたち
1. sort(List list)
:並び替え
List<Integer> numbers = new ArrayList<>(Arrays.asList(5, 3, 8, 1));
Collections.sort(numbers);
System.out.println(numbers); // [1, 3, 5, 8]
数字だけでなく、文字列のリストもアルファベット順に並べられます!
2. reverse(List list)
:逆順にする
Collections.reverse(numbers);
System.out.println(numbers); // [8, 5, 3, 1]
「小さい順→大きい順」だけでなく「最後から順番に」も簡単に!
3. shuffle(List list)
:ランダムに並べ替え
Collections.shuffle(numbers);
System.out.println(numbers); // 毎回異なる順に!
カードゲームやランダム問題出題に大活躍。
4. max(Collection c)
/ min(Collection c)
:最大・最小を取得
int max = Collections.max(numbers);
int min = Collections.min(numbers);
System.out.println("最大値:" + max + "、最小値:" + min);
最も大きい・小さい要素を一発取得!
5. frequency(Collection c, Object o)
:登場回数を数える
List<String> colors = Arrays.asList("赤", "青", "赤", "緑", "赤");
int count = Collections.frequency(colors, "赤");
System.out.println("赤の出現回数:" + count); // 3
「特定のデータが何回出てきたか」が知りたいときに便利!
6. fill(List list, Object obj)
:全てを指定の値にする
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
Collections.fill(list, "X");
System.out.println(list); // [X, X, X]
テスト用の仮データを作る時などに役立ちます。
7. copy(List dest, List src)
:リストのコピー
List<String> src = Arrays.asList("A", "B", "C");
List<String> dest = new ArrayList<>(Arrays.asList("", "", ""));
Collections.copy(dest, src);
System.out.println(dest); // [A, B, C]
※dest
にはコピー元と同じサイズの空要素が必要なので注意!
8. binarySearch(List list, T key)
:二分探索で検索
List<Integer> sorted = Arrays.asList(1, 3, 5, 7, 9);
int index = Collections.binarySearch(sorted, 5);
System.out.println(index); // 2
事前に昇順でソートされていることが必要です!
よく使うCollectionsメソッドまとめ
メソッド | 役割 | 注意点 |
---|---|---|
sort() | 昇順に並べ替える | 文字列や数値の自然順 |
reverse() | 順番を逆にする | 並び替えた後の調整に |
shuffle() | ランダム並び替え | テストやゲームに便利 |
min() / max() | 最小・最大要素を取得 | Comparableが必要 |
fill() | 全要素を特定の値に | 初期化やモック用途 |
copy() | 片方からもう片方へコピー | コピー先に注意 |
binarySearch() | ソート済リストから高速検索 | ソート済が前提 |
なぜCollectionsクラスが重要なの?
例えるなら、Listがハサミなら、Collectionsはカッターや定規などの道具セット。
複雑な処理を自力で書くのではなく、すでに用意された道具をうまく使うことで、コードはシンプルでエラーが少なく、保守しやすくなります。
よくあるミスと対処法
copy()
でコピー先リストが小さい → サイズを揃えてから使おう。binarySearch()
で未ソートのリストを検索 → 先にsort()
を忘れずに!
今後の学習のヒント
Comparator
を使った独自ルールでのsortに挑戦してみましょう!Collections.synchronizedList()
のようなスレッドセーフな方法も学ぶと、マルチスレッド対応にも強くなれます。
次は「Map系のユーティリティクラス」や「Stream API」と組み合わせて、もっと強力なコレクション操作に進んでいきましょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
