我有一个在程序中填充的 Java HashHap。出于某种原因,地图中的 entrySet 包含我所期望的内容,但是当我查看内部条目表时,它缺少一个值。由于缺少该值,我得到一个空值,它破坏了一切。也许我不像我想的那样理解 HashMaps,但表是否应该包含 entrySet 中的所有条目?谢谢。
在谈论 entrySet 和 table 时,我确实在谈论调试时 HashMap 的内部结构。这是我的“entrySet”的样子:
[IS_DELETED=0, COLLECTION_SET_NAME=D-EIUCFOE-SET, MAP_ID=Ic65fd5ffb7c311e09fc6842b2ba7e81a, PRODUCT_ID=1, USER_ID=U0158703, WM_DIFFVER=DiffBase, DISTRICT_CODE=TX_N_DIS, WM_CODE=NC, MODIFIED_DATE=2012-09-04 10:13:08.973]
这是我的桌子的样子:
[IS_DELETED=0, COLLECTION_SET_NAME=D-EIUCFOE-SET, null, null, PRODUCT_ID=1, null, null, null, WM_DIFFVER=DiffBase, null, DISTRICT_CODE=TX_N_DIS, WM_CODE=NC, MODIFIED_DATE=2012-09-04 10:13:08.973, null, null, null]
因此,当我的代码在创建此 HashMap 后查找 MAP_ID 时,它会出现 null 并且它会爆炸。
table HashMap$Entry<K,V>[16] (id=248)
[0] HashMap$Entry<K,V> (id=270)
hash -1013369904
key "IS_DELETED" (id=883)
next null
value BigDecimal (id=884)
[1] HashMap$Entry<K,V> (id=271)
hash 449814449
key "COLLECTION_SET_NAME" (id=896)
next HashMap$Entry<K,V> (id=898)
value "D-EIUCFOE-SET" (id=899)
[2] null
[3] null
[4] HashMap$Entry<K,V> (id=275)
hash -1942791868
key "PRODUCT_ID" (id=900)
next HashMap$Entry<K,V> (id=901)
value BigDecimal (id=902)
[5] null
[6] null
[7] null
[8] HashMap$Entry<K,V> (id=276)
hash -1109968520
key "WM_DIFFVER" (id=904)
next null
value "DiffBase" (id=905)
[9] null
[10] HashMap$Entry<K,V> (id=278)
hash -1920690854
key "DISTRICT_CODE" (id=906)
next null
value "TX_N_DIS" (id=907)
[11] HashMap$Entry<K,V> (id=279)
hash -1948303941
key "WM_CODE" (id=909)
next null
value "NC" (id=910)
[12] HashMap$Entry<K,V> (id=280)
hash 1002278668
key "MODIFIED_DATE" (id=912)
next null
value TIMESTAMP (id=913)
[13] null
[14] null
[15] null
我无法获取 MAP_ID 条目,但它作为字符串从数据库返回。