0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaのComparableとComparatorの使い分けまとめ(Java本格入門より)

0
Last updated at Posted at 2026-10-04

Javaでオブジェクトをソートする際に利用する Comparable と Comparator について、
書籍 「Java本格入門」 を参考に学んだ内容を整理します。


Comparable と Comparator の違い

✔ Comparable

  • ソート対象となる クラス自身に実装する
  • 自分自身と相手オブジェクトを比較する
  • **1種類のソート(自然順序)**しか定義できない
  • 使用メソッド:compareTo()

✔ Comparator

  • 外部オブジェクトとして比較ロジックを実装する
  • 任意のクラス同士の比較が可能
  • 複数種類のソートが可能(thenComparing など)
  • 使用メソッド:compare()

使い分けの基準

✔ Comparable を使う場面

  • そのクラス自身の 「最も自然な並び方」 を定義したいとき
  • デフォルトのソート順として利用したい場合
    • 例:生徒を 出席番号順 に並べる

✔ Comparator を使う場面

  • 業務的に必要な並び方でソートしたいとき
  • 複数のソート条件を切り替えたい場合
    • 例:生徒を
      • 点数順
      • 出席番号順
        など用途に応じて並べ替える

実務ではどちらを使うべきか?

結論:業務では Comparator を使うことが一般的。

理由:

  • 業務データは複数のソート条件を持つことが多い
  • モデルクラスを頻繁に編集したくない(Comparableはクラス改修が必要)
  • Java 8以降は Comparator のユーティリティが強力で扱いやすい

まとめ

  • Comparable:クラス自身が持つ自然順序を定義する
  • Comparator:外部から柔軟に複数の並び替えルールを与える
  • 実務では Comparator が主役

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?