Я заметил логическое несоответствие между интерфейсами Set и SortedSet в Java.
SortedSet распознает разные объекты (методом equal()) как равные, если они совпадают при сравнении, но это логически неверно. Сравнение объектов должно отвечать только за порядок объектов.
Например: у меня может быть много товаров, и я хочу отсортировать их по цене. При этом SortedSet не может содержать разные товары с одинаковой ценой: [“соль”, 0,5$], [“молоко”, 1$], [“хлеб”, 1$], [“бананы”, 2$ ] В приведенном выше примере молоко будет заменено хлебом. В этом случае контракт унаследованного интерфейса Set будет нарушен, так как неравные объекты заменяют друг друга. Я прочитал JavaDoc SortedSet и знаю, что это поведение хорошо задокументировано, но я думаю, что это логическая ошибка.
Каково ваше мнение, может у вас уже были подобные проблемы с Set и SortedSet?