guava是否有一个Map实现,它采用自定义哈希/等于函数?

eba*_*axt 12 java guava

有人知道Guava是否有与Functionaljava的HashMap相同的版本?

Phi*_*ler 14

据我所知,没有.

但是您可以Equivalence.Wrapper使用所需的Equivalence策略将所有密钥包装在实例中:

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

map.put(equiv.wrap(key), value);
Run Code Online (Sandbox Code Playgroud)

当然,这意味着您需要为地图中的每个条目添加一个额外的对象.因此,我认为像你建议的地图实现会很好.


Joh*_*nes 7

我知道你没有具体要求这个,所以这里说:
如果您想要的是Map一个自定义等价函数,您可以通过使用TreeMap自定义的标准来实现相同的目标Comparator.

  • 如果你这样做,只是不要指望一切都能正常工作,如TreeMap javadocs中所述. (5认同)