Java TreeSetにコンパレータが設定されていて、オブジェクトの並べ替えロジックを処理する場合。ただし、オブジェクト(クラス)にもcomparableが実装されており、有効なcompareToメソッドが実装されています。
どちらが優先されますか?コンパレータ内のロジックまたはcompareToメソッド内のロジック?
どうもありがとう。
TreeSetのコンストラクターに渡されたコンパレーターが優先されます。これにより、オブジェクトによって実装されるものとは異なる比較アルゴリズムを使用できますcompareTo
。これがなければ、TreeSetで別の比較アルゴリズムを使用することはできません。
これは、Javadocでかなり明確に説明されています(強調が追加されています)。
public TreeSet(Comparator<? super E> comparator)
指定されたコンパレータに従ってソートされた 、新しい空のツリーセットを構築します。..。パラメータ:
comparator
-このセットの注文に使用されるコンパレータ。