Кто-нибудь знает, есть ли у Guava эквивалентная версия Functionaljava HashMap?
Существует ли у guava реализация Map, которая выполняет пользовательские функции hash/equals?
Ответ 1
Насколько я знаю, нет.
Но вы можете обернуть все свои ключи в Equivalence.Wrapper
с помощью Equivalence
, которая вам нужна:
Equivalence<K> equiv = ...
Map<Equivalence.Wrapper<K>, V> map = ...
map.put(equiv.wrap(key), value);
Конечно, это означает, что вам нужен дополнительный объект для каждой записи на вашей карте. Таким образом, я думаю, что реализация карты, как вы предлагаете, будет приятной.
Ответ 2
Я знаю, что вы не просите об этом конкретно, поэтому здесь идет:
Если все, что вам нужно, это Map
с пользовательской функцией эквивалентности, вы можете добиться того же, используя стандартный TreeMap
, который принимает пользовательский Comparator
.