Java の Set インターフェイスと SortedSet インターフェイスの間に論理的な矛盾があることに気付きました。
SortedSet は、(equal() メソッドによって) 異なるオブジェクトが比較中に同じである場合に等しいと認識しますが、これは論理的に正しくありません。オブジェクトの比較は、オブジェクトの順序のみを担当する必要があります。
例: たくさんの商品を持っていて、それらを価格で並べ替えたいとします。この場合、SortedSet には同じ価格の異なる製品を含めることはできません: [“salt”,0.5$], [“milk”, 1$], [“bread”, 1$], [“bananas”, 2$ ] 上記の例では、牛乳がパンに置き換えられます。この場合、等しくないオブジェクトが互いに置き換えられるため、継承された Set インターフェイスの規約に違反します。私は SortedSet の JavaDoc を赤字にして、この動作が十分に文書化されていることを知っていますが、これは論理的な失敗だと思います。
Set と SortedSet ですでに同様の問題を抱えているのではないでしょうか?