double hashing but the algorithm in HashCode2() is not very good