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のインスタンス)を指定すれば良いようです。