![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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
No.1ベストアンサー
- 回答日時:
詳しく調べてないので、想像なんですが…
HashMapというコンテナは、
ハッシュという手法で、データを保管します。
これはどういうことかというと、
(詳しくはアルゴリズムの本を見てほしいのですが)
データを、いくつかに分類して入れるのです。
たとえば「SpiralGalaxyさんは12文字だから、番号12のところに保存」
というふうに。(実際には番号付けはもっと複雑ですが)
しかし、このようにすると、
同じ番号のところに複数のデータが入ることがあります。
そういう場合、いくつかのデータを列にして保存します。
図にするとこんな感じ。
◇-●-●-●
◇-
◇-●-●
◇-
...
◇-●
◇-●-●-●
◇が番号のところで、●がデータです。
特定の番号には、データは無かったり、複数あったりします。
この場合の$Entryというのも、こういうものだと思います。
複数データを持っている番号があるので、
データの数とその数が合わないのでしょう。
実際に、HashMapからデータを取り出す作業をしてみてください。
おそらく入れた数だけ取り出せると思います。
(そうでなかった場合は補足に書いてください)
参考URL:http://www.amazon.co.jp/exec/obidos/ASIN/4797304 …
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"
No.3
- 回答日時:
エクリプスを使っているのであれば、
デバッグモードで実行して、
ブレイクポイントで止めた後、
表示ペインからHashMapの中身を
コンソールに出力するコードを書いて実行することで確認できそうです。
釈迦に説法かもしれなかったですが。
以上
御回答ありがとうございます。
>釈迦に説法かもしれなかったですが。
恐縮します。(^^;
この辺で締め切りとさせていただきます。皆様ありがとうございました。勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- MySQL MYSQL エラー 2 2022/10/18 11:37
- PHP データベースを用いたwebページ 1 2022/12/27 20:12
- MySQL mysqlの結合について教えてください 1 2022/05/19 15:13
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列にnullを代入すると、null...
-
Java配列でNullPointerExceptio...
-
BOOL値を逆にしたい
-
eclipseでoracle接続時のエラー...
-
例外でBeanUtils.populateが、...
-
C# ListBoxのインデックスの値...
-
Stringを返す getText()メソッ...
-
getStringの値がNULLの時の処理
-
jsp/Servletの動的に増えるフォ...
-
java 引数 戻り値のあるメソッド
-
(o==null ? get(i)==null : o.e...
-
ORA-01858: 数値を指定する箇所...
-
HashMapがおかしい
-
JavaScriptのnullはいつ使う?
-
Javascript エラーメッセージが...
-
入力された文字列の制限
-
配列と空欄の比較
-
javascript if
-
gas カレンダー祭日設定でエラー
-
JSPやサーブレットでSystem.out...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列にnullを代入すると、null...
-
ORA-01858: 数値を指定する箇所...
-
Java配列でNullPointerExceptio...
-
getStringの値がNULLの時の処理
-
BOOL値を逆にしたい
-
C# ListBoxのインデックスの値...
-
eclipseでoracle接続時のエラー...
-
gas カレンダー祭日設定でエラー
-
Stringを返す getText()メソッ...
-
Javascript エラーメッセージが...
-
JSPで複数のSQL実行につ...
-
jsp/Servletの動的に増えるフォ...
-
JSPでの画面表示の方法
-
例外でBeanUtils.populateが、...
-
C#でラジオボタンとコンボボッ...
-
Safari ダウンロード時に日本語...
-
java 引数 戻り値のあるメソッド
-
HashMapがおかしい
-
逆コンパイルの見方について(...
-
JavaScriptのnullはいつ使う?
おすすめ情報