- ベストアンサー
HashMapがおかしい
HashMap で以下の様にコーディングしました。 当然 map の中には19個のオブジェクトが存在するはずですが、何故か15個しかありません。どなたか原因を御存知でしょうか? HashMap map = new HashMap(); map.put("key1", new Integer(1)); . (2->8)省略 . map.put("key9", new Integer(9)); map.put("key10", new String("10")); . (11->18)省略 . map.put("key19", new String("19")); 以下エクリプスのデバッガで取得したもの。 ECLIPSE 2.1.3 / JDK 1.4.2.03 map= HashMap (id=21) entrySet= HashMap$EntrySet (id=50) keySet= null loadFactor= 0.75 modCount= 19 size= 19 table= HashMap$Entry[32] (id=26) [0]= null [1]= HashMap$Entry (id=28) [2]= HashMap$Entry (id=31) [3]= null [4]= null [5]= null [6]= null [7]= null [8]= null [9]= HashMap$Entry (id=32) [10]= HashMap$Entry (id=33) [11]= null [12]= null [13]= HashMap$Entry (id=34) [14]= HashMap$Entry (id=35) [15]= HashMap$Entry (id=36) [16]= HashMap$Entry (id=37) [17]= null [18]= null [19]= null [20]= HashMap$Entry (id=38) [21]= null [22]= null [23]= HashMap$Entry (id=39) [24]= HashMap$Entry (id=40) [25]= null [26]= HashMap$Entry (id=41) [27]= HashMap$Entry (id=42) [28]= null [29]= HashMap$Entry (id=43) [30]= HashMap$Entry (id=44) [31]= null threshold= 24 values= null
- みんなの回答 (3)
- 専門家の回答
お礼
Oracleに接続してデータを選択し選択レコードの項目タイプに応じて取り出し HashMap に結果として保存するクラスを書いていたんですが、ある項目が NULL 値となるため、質問文のようなソースを書いて確認しました。その時点で個数が合わないのでおかしいと思い質問した次第です。 実際上記ソースでも、ちゃんと取り出せました。確認もせず質問してしまい冷や汗ものです(^^; NULL値となるのは SQL文他別の原因でした。 デバッガでさらに確認したところ 1個しか入らないと「思い込んで」いた配列の一つの要素に以下の様に3つ入っていました。 ありがとうございました。参考になりました。 [1]= HashMap$Entry (id=28) hash= -820427199 key= "key18" <------------------ count= 5 hash= 101943494 offset= 0 value= char[5] (id=54) next= HashMap$Entry (id=52) hash= 1493777409 key= "key4" <------------------ next= HashMap$Entry (id=56) hash= -819273471 key= "key13" <------------------ next= null value= "13" value= Integer (id=57) value= "18"