Improved hashCode implementations for the Vector classes.

Block[World]Vector was ignoring changes of y < 128 (i.e. all of them) and changes of x < 8192.
This commit is contained in:
TomyLobo 2011-09-25 04:49:07 +02:00
parent 3bbebcd64e
commit 50009cc855
3 changed files with 10 additions and 7 deletions

View File

@ -93,8 +93,8 @@ public class BlockVector extends Vector {
*/
@Override
public int hashCode() {
return (Integer.valueOf((int)x).hashCode() >> 13) ^
(Integer.valueOf((int)y).hashCode() >> 7) ^
return (Integer.valueOf((int)x).hashCode() << 19) ^
(Integer.valueOf((int)y).hashCode() << 12) ^
Integer.valueOf((int)z).hashCode();
}
}

View File

@ -126,8 +126,8 @@ public class BlockWorldVector extends WorldVector {
*/
@Override
public int hashCode() {
return (Integer.valueOf((int)x).hashCode() >> 13) ^
(Integer.valueOf((int)y).hashCode() >> 7) ^
return (Integer.valueOf((int)x).hashCode() << 19) ^
(Integer.valueOf((int)y).hashCode() << 12) ^
Integer.valueOf((int)z).hashCode();
}
}

View File

@ -585,9 +585,12 @@ public class Vector {
*/
@Override
public int hashCode() {
return ((new Double(x)).hashCode() >> 13) ^
((new Double(y)).hashCode() >> 7) ^
(new Double(z)).hashCode();
int hash = 7;
hash = 79 * hash + (int) (Double.doubleToLongBits(this.x) ^ (Double.doubleToLongBits(this.x) >>> 32));
hash = 79 * hash + (int) (Double.doubleToLongBits(this.y) ^ (Double.doubleToLongBits(this.y) >>> 32));
hash = 79 * hash + (int) (Double.doubleToLongBits(this.z) ^ (Double.doubleToLongBits(this.z) >>> 32));
return hash;
}
/**