ConcurrentHashMap
和HashMap
使用equals()
/hashCode()
的关键实例.
几十年来,在相当多的场合,我错过了提供不同的equals/hashCode实现的可能性.不能这样做意味着您要么必须使用排序映射(允许您设置Comparator
,代价是SortedMap较差的性能特性),要么您必须使用不同的对象作为您的键,例如,通过创建提供其自己的equals/hashCode实现的键包装实例.
在后一种情况下,需要 for each 键创建另一个对象具有明显的内存和性能影响.(在我看到的当前情况下,这意味着在高峰时间每秒创建数十万个额外的对象实例--这是性能最重要的地方.)
这似乎是一项微不足道且安全的更改,在需要的情况下具有巨大的性能优势.
自at least version 1.1年以来,.NET一直在为其Dictionary
提供这一服务.那么,为什么Java没有这样做,有什么好的技术原因吗?