If two vectors are close to zero they will map to "0" in the current hashCode implementation. A better approach would be something like this: int hashVector3(VM.Vector3 v) { int h = 0; for (int i in v.storage.buffer.asInt32List()) { h ^= i; } return h; }