1. ホーム
  2. java

[解決済み] Java : 比較可能 vs 比較器 [重複]の場合

2022-04-26 09:38:22

質問

<ブロッククオート

重複の可能性があります。

compare()とcompareTo()の違い

Javaです。ComparableとComparatorの実装の違いは何ですか?

ComparableとComparatorの主な違いは何ですか。

また、どのような場面でどちらが優先されるのでしょうか?

ありがとうございます。

更新 - 例を含む良いリンク!

http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html

解決方法は?

を実装している場合、そのクラスは 比較可能 を使用すると compareTo メソッドは、そのオブジェクトの自然な順序を定義しています。 そのメソッドは、そのオブジェクトの他のメソッドと一致するように契約上義務付けられています(要求されているわけではありませんが)。 .equals() の比較は真を返します。

A コンパレータ は、2 つのオブジェクトを比較する方法を独自に定義したもので、自然な順序とは異なる方法でオブジェクトを比較するために使用することができます。

例えば、文字列は一般的にアルファベット順に比較されます。 したがって "a".compareTo("b") はアルファベット順の比較を使用します。 もし、文字列の長さを比較したい場合は、カスタムコンパレータを書く必要があります。

要するに、大差はないのです。どちらも似たような手段に対する目的なのです。 一般的には、自然な順序で比較できるように実装し(自然な順序の定義は明らかに解釈の余地があります)、他のソートや比較の必要性についてはコンパレータを書きます。