我注意到 Java 中 Set 和 SortedSet 接口之间的逻辑不一致。
SortedSet 将不同的对象(通过 equal() 方法)识别为相等,如果它们在比较期间相同,但它在逻辑上是不正确的。对象的比较应该只负责对象的顺序。
例如:我可以有很多产品,我想按价格对它们进行排序。在这种情况下,SortedSet 不能包含价格相同的不同产品:[“salt”,0.5$], [“milk”, 1$], [“bread”, 1$], [“bananas”, 2$ ] 在上面的例子中,牛奶将被面包代替。在这种情况下,继承的 Set 接口的约定将被违反,因为不相等的对象相互替换。我红色了 SortedSet 的 JavaDoc,并且知道这种行为有据可查,但我认为这是一个逻辑上的失败。
你怎么看,也许你已经对 Set 和 SortedSet 有类似的问题?