I have watched over 100 hashCode implementations.
Frequently hash code is a sum of several other hashes. Such implementation
kill hash idea, it's terrible.
Here is some examples
public int hashCode() {
int result = 0;
Iterator<Map.Entry<K, V>> it = entrySet().iterator();
while (it.hasNext()) {
result += it.next().hashCode();
}
return result;
}
public int hashCode() {
int i = this.addrType.hashCode();
for (int j = 0; j < this.buf.length; j++) {
i += this.buf[j];
}
return i;
}
public int hashCode() {
return modifiers *+* ( keyCode != KeyEvent.VK_UNDEFINED ?
len keyCode : keyChar) *+* (onKeyRelease ? -1 : 0);
}
public int hashCode() {
return id.hashCode() + bcc.hashCode();
}
and many others... also I have found such "algorithms" =)
private long* *token;
public int hashCode() {
return (int) token;
}
private long objNum;
public int hashCode() {
return (int) objNum;
}
The most of hashCode() functions are implemented in different ways. It's not
problem, but it looks like scrappy, there is no single style. And finally we
have class *org.appache.harmony.misc.HashCode *for this aim!
Example of using
public int hashCode() {
HashCode hash = new HashCode();
hash.append(m00);
hash.append(m01);
hash.append(m02);
hash.append(m10);
hash.append(m11);
hash.append(m12);
return hash.hashCode();
}
public int hashCode() {
HashCode hash = new HashCode();
hash.append(width);
hash.append(cap);
hash.append(join);
hash.append(miterLimit);
if (dash != null) {
hash.append(dashPhase);
for(int i = 0; i < dash.length; i++) {
hash.append(dash[i]);
}
}
return hash.hashCode();
}
But only several classes are using it. I suggest integrate HashCode in
all hashCode() implementations (about 200 files), I can do this. Anybody
else can improve HashCode work.
Any comments?
2006/7/26, Anton Luht <[EMAIL PROTECTED]>:
Hello,
One of possible candidates for such optimization may be for example
String.hashCode() . Current implementation is rather common. Wikipedia
points to hash functions that look more advanced (
http://en.wikipedia.org/wiki/Hash_function ).
--
Regards,
Anton Luht,
Intel Middleware Products Division
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
Denis M. Kishenko
Intel Middleware Products Division