Java对于eqauls方法和hashCode方法是这样规定的:1、如果两个对象相同,那么它们的hashCode值一定要相同;2、如果两个对象的hashCode相同,它们并不一定相同. 网上找的一些实现: static int hash(Object x) { int h = x.hashCode(); h += ~(h << 9); h ^= (h >>> 14); h += (h << 4); h ^= (h >>> 10); return h; } public int hashCode() { int hash = 0; int len = val.length(); for ( int i=0; i<len; i++ ) { hash <<= 1; if ( hash < 0 ) { hash |= 1; } hash ^= val[ i ]; } return hash; }