我想知道一个像常规HashMap/Hashtable一样工作的Map,除了它需要一个函数来返回哈希码并执行相等测试,而不是让HashMap使用Object.hashCode/equals.
我不能使用TreeMap,因为对象没有实现Comparable,并且没有稳定的方法来处理不等对象的情况.无法使用System.identityHashCode,因为对于不相等的对象可能会发生冲突.
理想情况下,如果Map以类似的方式获取函数,可以将自定义Comparator提供给TreeMap而不是让TreeMap将参数转换为Comparable,那将是很好的.
解决这个问题的唯一方法是包装每个密钥并让包装器执行自定义哈希/等于但是肯定会有更好的方法.
您是否考虑过想要缓存的对象的简单包装?
class Wrapper {
YourObject object;
public boolean equals(Object someOther) {
...
}
public int hashCode() {
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4615 次 |
最近记录: |