У меня есть несколько наборов, которые хранят объекты одного и того же класса, но я хочу указать для каждой из них другую функцию идентификации (например, в одном наборе A == B, если Ax == Bx, а в другом A == B, если Ay == By).Определение мульчированных хэш-функций для одного и того же объекта
В настоящее время я использую TreeSets с различными компараторами, определенными для каждого. Мне интересно, как можно сделать то же самое, если я хочу переключиться на HashSets. Java не позволяет передавать отдельную хеш-функцию таким же образом, что позволяет сравнивать компараторы для сортированных/древовидных коллекций. Единственный способ, с помощью которого я могу это сделать, - это создать другой класс-оболочку и реализовать метод hashCode() для каждого из элементов каждого HashSet. Есть ли лучший способ сделать это?
Вы можете реализовать подклассы как частные внутренние классы и предоставить фабричный метод для получения семантики равенства, которую вы хотите. Это инкапсулирует выбор полностью – Andrew