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

 

 

 

デスクの飲み物を水筒のお茶に変えた

1杯あたりティーバッグが10円、お湯のガス代がどれぐらいか分からないけど、ティーバッグ4つと10円くらいとすると、1日50円で飲み放題飲める。

コンビニや自販機のお茶は140円くらいするもんね。節約していこう

ラムダ式の使用頻度について

ツイッターで、ラムダ式の書き方って今までの機能に比べると、明らかに異質だよねって話の流れで、「ラムダ式禁止おじさん」とか「三項演算子禁止おじさん」という言葉を知って、ちょっとおもしろかった。

現役でアプリ開発やっていらっしゃる方からすれば、「ラムダ式にすることで劇的にコード量が減らせる」とのことで、使える側からしたら禁止とか、できない人に合わせるなよって感じでしょうか。

Eclipseを使い始めた

今まで、「スッキリわかるJava入門」のサービスでWeb上でJavaのコード入力を確認できるサービス、dokojavaっていうサイトで試してたんだけど、モジュールシステムやパッケージ、複数のクラスの動作確認をするには、Eclipseに慣れておいた方がよいだろうと思い、やっと(今更かよ…)インストール、セッティングした。つまり、Java Silverはほとんどコードを実際に書かずに問題集やっただけだったのだ。現場で、IDE使う時に困るやろし、自分で打ってみて実感として分かる方が後々に役立つだろうしね。

 

 

Eclipseは最初から日本語化しているpleiadesっていうパッケージを。プレアデスといえば、日本語で言うと昴(すばる)だよ。プレアデス星団。肉眼で6,7個みえるっていう。おうし座のアンタレスの右上ぐらいにモヤモヤしたのが昴。

 

Eclipse,Java以外にもいろいろ使えるようで。C#Visual Studio使った方がいいのかな。

 

面白かったのは、とあるメソッドにポインタ合わせると、説明がポップアップで出てくるんだけど、

  • このメソッドは、ほとんどのプログラマにとって役に立ちません。

って書いてあってなんか笑っちゃった。意味は分かるけど。