Существует ли у guava реализация Map, которая выполняет пользовательские функции hash/equals?

Кто-нибудь знает, есть ли у Guava эквивалентная версия Functionaljava HashMap?

Ответ 1

Насколько я знаю, нет.

Но вы можете обернуть все свои ключи в Equivalence.Wrapper с помощью Equivalence, которая вам нужна:

Equivalence<K> equiv = ...
Map<Equivalence.Wrapper<K>, V> map = ...

map.put(equiv.wrap(key), value);

Конечно, это означает, что вам нужен дополнительный объект для каждой записи на вашей карте. Таким образом, я думаю, что реализация карты, как вы предлагаете, будет приятной.

Ответ 2

Я знаю, что вы не просите об этом конкретно, поэтому здесь идет:
Если все, что вам нужно, это Map с пользовательской функцией эквивалентности, вы можете добиться того же, используя стандартный TreeMap, который принимает пользовательский Comparator.