TreeSet、特にコンパレータを使用しない引数のないバージョンが、その要素が順番にどのように保持されているかを正確に理解したいと思っています。私はどこでも満足のいく説明を見つけることができません。彼らはあまりにも基本的すぎるか、あまりにも進んで私のためです。私の研究から、TreeSetsは実際にTreeMapに要素を格納し、TreeMapsは実際にはRed-Blackツリーであるようです。赤黒の木に要素がどのように追加されているかについての私の理解はかなり確信しています。Red-Blackツリーへの要素の挿入を制御するJava TreeSetメソッド
私は、Java APIのどこかに、要素をRed-Blackツリーに挿入するアルゴリズムまたはメソッドが必要であると仮定します。私の最初の質問は、Java APIのどこにアルゴリズムがあるのですか?
また、このアルゴリズムはどのくらい正確に呼び出されていますか?私はそれがTreeSetクラスで、右の追加(E e)メソッドによって呼び出されると思いますか?ツリーセットに要素を追加するときに発生する正確な一連のイベントについて、より詳細な情報を提供できますか?
最後に、実験と同じように、オブジェクトにcompareTo()メソッドを渡しましたが、DIDはComparableインターフェイスを実装しません。これらのオブジェクトをTreeSetに追加しようとすると、例外がスローされます。オブジェクトにcompareTo()メソッドがあるのに例外がスローされる理由を理解したい。私は、挿入アルゴリズムのどこかに、すべてのオブジェクトがComparableを実装する必要があるメソッドがあると思いますが、これは正しいですか?スローされた例外のstackTraceはTreeMap.compare()メソッドを指します。これは、TreeSetに追加されるすべてのオブジェクトがComparableインターフェイスを実装することを必要とするメソッドだと思いますが、このTreeMap.compare()メソッドがAPIで表示されません。 APIでこのTreeMap.compare()メソッドの詳細を調べるにはどうすればよいですか?
ご協力いただきありがとうございます。
"オブジェクトにcompareTo()メソッドがあっても例外がスローされる理由" Javaは[ダックタイピング](https://en.wikipedia.org/wiki/Duck_typing)を使用しません。'compareTo()'というメソッドが存在するだけでは不十分です。クラスは 'Comparable'を実装し、' compareTo() 'を正しくオーバーライドして使用可能にする必要があります。 –
'TreeMap.compare'は、APIの一部として公開されないプライベートな実装の詳細です。 –