![](/img/trans.png)
[英]Is there a way to get Java's unique hashcode from objects like HashMap?
[英]Java: Unique hashCode() on Immutable Objects through static counter
我有一个非常大的不可变对象Set
,所以我想在构造时为它们分配一个唯一的哈希码。
private static int counter = Integer.MIN_VALUE;
private final double foo;
private final double bar;
private final int hashCode;
public MyImmutableObject(double foo, double bar)
{
counter++;
this.foo = foo;
this.bar = bar;
this.hashCode = counter;
}
@Override
public int hashCode()
{
return this.hashCode;
}
/**
* Unneeded override of equals since its the same as in
* Object, but shown for demonstration purposes.
*/
@Override
public boolean equals(final Object obj)
{
return this == obj;
}
这样,我可以实现尽可能高的键分散,因为我将拥有2 32个唯一键。 当然,这也意味着这种类型的两个对象不会相等,因为一个对象只会等于它自己。
编辑:对象也用作Map
的键。
这可能吗? 我错过了隐藏的陷阱吗?
这可能吗? 我错过了隐藏的陷阱吗?
线程安全,一件事? 当然,您可以使用AtomicInteger
来绕过它。
然后还有它的无意义,真的。 内置的哈希代码将非常接近于唯一,而无需进行任何额外的工作(并且每个对象额外增加4个字节)。 鉴于你没有改变平等的含义(它仍然基本上是参考平等),我看不出有任何理由这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.