HashMapデータ構造を使用してキーがMatrixIndex(行と列を含む)で、値がInteger型のSqMatrix(正方行列)を格納しています。 。java HashMap containsKeyはキーが存在するのにfalseを返しています
しかし、私は "if(mat.containsKey(key))"の出力としてfalseになっていますが、HashMapには対応するキーがあります。
メインコード:
public static void main(String[] args) {
Random generator = new Random();
int val = 0;
Types.MatrixIndex key, key1;
int matSz = (int) Math.floor(Math.sqrt(10));
Types.SqMatrix mat = new Types().new SqMatrix(matSz); //matSz*matSz elements
//HashMap<Types.MatrixIndex,Integer> hMap= new HashMap<Types.MatrixIndex,Integer>(10);
for (int r=0; r<matSz; r++) {
for (int c=0; c<matSz; c++) {
if (r<c) {
val = generator.nextInt(2) > 0? -1 : val;
key =(new Types()).new MatrixIndex(r, c);
key1 = (new Types()).new MatrixIndex(c, r);
mat.put(key, val);
mat.put(key1, val);
generator.setSeed(System.currentTimeMillis());
}
}
}
for (int r=0; r<matSz; r++) {
val = 0;
for (int c=0; c<matSz; c++) {
if (r!=c) {
key = (new Types()).new MatrixIndex(r, c);
if (mat.containsKey(key)) {
val = val + mat.get(key);
}
}
}
key1 = (new Types()).new MatrixIndex(r, r);
mat.put(key1, val);
}
誰もが、それはHashMapの中に存在しているものののcontainsKeyはfalseを返している理由についてのアイデアを持っていますか?事前に
おかげで、
_accepted_ answer to http://stackoverflow.com/questions/1104030/java-hashmap-get-works-but-containskey-does-not助けてください'MatrixIndex'クラスに対して' equals() 'と' hashCode() 'を実装していないと思われるからです。 – andyb
私は答えを受け取るためのリンクがありません。どんな手掛かりも返事を受け入れる方法? – somnathchakrabarti