ComarableとComparator 似てるけど、どう違うん?【Java】

Javaでよく使う、ComparableとComparator、似てて混乱しますよね。僕はしてます。なので、このページで整理していこうかと思います。

Java.langパッケージはプログラムを作成する上でよく使用される、基本的なクラスをまとめたものです。頭にimport文で明示しなくても勝手に入ります。

そのjava.langの中にComparableはあります。比較できるやつですよーっていう目印になって、実際に、何をどう比較して順番を変えたりするのか?っていうところを実装すればよいわけですね。

その比較条件をComparableのcomapareTo(T target)メソッドの中に書いていくようになっています。

 

じゃあ、Comparatorは?って気になっていたので、ちょっと調べてみました。

一般的な使い方は、こんな感じです。

比較条件をComparatorの中のcompare(T a1, T a2)メソッドで引数2つ受け取り、それぞれのどの値を評価すれば1、-1、0(等価)になるかを返す、っていう感じです。

それを、Collectionsのsortメソッドの第一引数を比較対象、第二引数に比較方法(Comparatorのインスタンス)を指定すれば良いようです。