Comparator を実装するための便利なニーモニックを持っている人はいますか?
-
14-11-2019 - |
質問
コンパレータを実装する必要があるたびに、いつ -1 を返すべきか、いつ 1 を返すべきかを覚えておかなければならず、調べる必要があります。
つまり、明らかに -1 は 少ない, 、つまり、それは次のことを意味します first
よりも少ない second
. 。しかし、私が自分自身にそれを言うときはいつでも、私はそれをしつこく「確かですか?」フィーリング。私の混乱の一部は、降順ソートが必要なときは常に逆の方法で実装したことに起因しているのではないかと思います。
どれがどれかを思い出すために何を使いますか?
解決
comparator.compare(a, b) < 0
<==> a < b
他のヒント
この単純な「部分破断」ニモニック:
first - second
.
だから、first
よりも "LESS"の場合、否定的な結果が得られます。
私はあなたがニーモニックによって何を意味するのかわからない。しかし、私は非常に似た認知的な不正行為をしました。
私は非常に視覚的なので、私は数の行を使います(私が学校で教えられたもの)。負の数を「左」、「中央」として0、正数を「正しい」として視覚化するだけです。それは真実に対応しています:-1 <0 <1
基本整数ケース(疑似コード):
int comparator(int a, int b) {
return a-b;
}
.
だから私たちが小さなa
と最初の<最後の<最後の<最後の<最後の<最後の結果を得るのであれば。
私はより視覚的なメモリを持っているので、その関数の「構造」を思い出して私にとって簡単で自然なことを思い出してください。
所属していません StackOverflow