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のインスタンス)を指定すれば良いようです。
Mapのmergeメソッドについて
Java8から
Mapのmerge()メソッドは、第1引数にキー、第2引数に値、第3引数にBiFunction型(ラムダ式)をとる。
Eclipseを使い始めた
今まで、「スッキリわかるJava入門」のサービスでWeb上でJavaのコード入力を確認できるサービス、dokojavaっていうサイトで試してたんだけど、モジュールシステムやパッケージ、複数のクラスの動作確認をするには、Eclipseに慣れておいた方がよいだろうと思い、やっと(今更かよ…)インストール、セッティングした。つまり、Java Silverはほとんどコードを実際に書かずに問題集やっただけだったのだ。現場で、IDE使う時に困るやろし、自分で打ってみて実感として分かる方が後々に役立つだろうしね。
Eclipseは最初から日本語化しているpleiadesっていうパッケージを。プレアデスといえば、日本語で言うと昴(すばる)だよ。プレアデス星団。肉眼で6,7個みえるっていう。おうし座のアンタレスの右上ぐらいにモヤモヤしたのが昴。
Eclipse,Java以外にもいろいろ使えるようで。C#はVisual Studio使った方がいいのかな。
面白かったのは、とあるメソッドにポインタ合わせると、説明がポップアップで出てくるんだけど、
-
このメソッドは、ほとんどのプログラマにとって役に立ちません。
って書いてあってなんか笑っちゃった。意味は分かるけど。