Я хотел бы знать о карте, которая работает как обычный HashMap/Hashtable, за исключением того, что она принимает функцию, которая возвращает хэш-код и выполняет тест равенства, вместо того чтобы позволить HashMap использовать Object.hashCode/equals.
Я не могу использовать TreeMap, потому что объекты не реализуют Comparable, и нет стабильного способа обработки случая с неравными объектами. Нельзя использовать System.identityHashCode, потому что существует вероятность конфликтов для объектов, которые не равны.
В идеале было бы замечательно, если бы Карта применила функцию аналогичным образом, чтобы поставлять собственный Компаратор в TreeMap вместо того, чтобы позволить параметрам листинга TreeMap сопоставляться.
Единственный способ обойти эту проблему - обернуть каждый ключ и сделать обертку обычным хешированием/равным, но, безусловно, лучше.