【Java】CollectionインターフェースとCollectionsクラスの違いとは?違いを徹底解説
はじめに
Javaのコレクションフレームワークを学んでいると、「Collection」と「Collections」という名前が似ている2つの存在に出会います。名前はほぼ同じですが、その役割はまったく異なります。この記事では、両者の違いをわかりやすく解説します。
CollectionとCollectionsの主な違い
CollectionはJavaにおけるインターフェースです。一方、Collectionsはユーティリティクラスであり、コレクションを操作するための便利な静的メソッドを提供します。
Set、List、QueueなどはCollectionインターフェースのサブインターフェースです。また、Mapインターフェースもコレクションフレームワークの一部ですが、Collectionインターフェースを継承していない点に注意しましょう。
主なメソッドの比較
Collectionインターフェースの代表的なメソッドには以下があります。
- add() … 要素の追加
- remove() … 要素の削除
- size() … 要素数の取得
- clear() … 全要素の削除
一方、Collectionsクラスには静的(static)メソッドのみが含まれており、以下のようなものがあります。
- sort() … リストのソート
- min() / max() … 最小値・最大値の取得
- fill() … 要素の一括設定
- copy() … リストのコピー
- reverse() … 要素順の反転
構文の違い
Collectionインターフェースの構文
public interface Collection<E> extends Iterable<E>
Collectionsクラスの構文
public class Collections extends Object
実装例
次のサンプルコードでは、ArrayListに要素を追加し、Collectionsクラスのmin()メソッドとmax()メソッドを使って最小値・最大値を表示しています。
import java.util.*;
public class CollectionTest {
public static void main(String args[]) {
ArrayList<Integer> list = new ArrayList<Integer>();
// ArrayListに要素を追加
list.add(5);
list.add(20);
list.add(35);
list.add(50);
list.add(65);
// Collections.min()メソッドで最小値を表示
System.out.println("Minimum value: " + Collections.min(list));
// Collections.max()メソッドで最大値を表示
System.out.println("Maximum value: " + Collections.max(list));
}
}実行結果
Minimum value: 5 Maximum value: 65
まとめ
- Collectionはデータの集まりを扱うためのインターフェース(List、Set、Queueなどの親)。
- Collectionsはコレクションを操作する静的メソッドを提供するユーティリティクラス。
- Mapはコレクションフレームワークに含まれるが、Collectionインターフェースは継承しない。
このように、Collectionは「モノの設計図」、Collectionsは「操作のための道具箱」と考えると、両者の役割の違いが理解しやすくなります。
-
JavaのIteratorとListIteratorの違いを徹底解説!特徴と使い分けのポイント
IteratorとListIteratorとは Javaでは、コレクションに格納された要素を1つずつ順番に取り出して処理するために、IteratorとListIteratorという2つのインターフェースが提供されています。 両者は内部実装こそ異なるものの、目的はどちらも「コレクション内のデータを順次走査する」ことです。しかし、利用できるコレクションの種類や、走査中に行える操作には大きな違いがあります。 IteratorとListIteratorの主な違い一覧 No.比較項目IteratorListIterator 1適用範囲List、Set、Queueなど、あらゆる種類のコレクションに対し
-
Javaのwait()メソッドとsleep()メソッドの違いを徹底解説
Javaのマルチスレッドプログラミングでは、sleep()メソッドとwait()メソッドのどちらもスレッドの処理を一時停止させるために使用されますが、両者にはいくつかの重要な違いがあります。本記事では、それぞれの特徴と相違点をわかりやすく解説します。 sleep()メソッドとwait()メソッドの主な違い 1. メソッドの種類と影響範囲 sleep()メソッドはThreadクラスのstatic(静的)メソッドであり、呼び出すと現在実行中のスレッドを「実行不可能(Non-Runnable)」状態にします。 一方、wait()メソッドはインスタンスメソッドであり、スレッドオブジェクトではなく対象の