[英]HashMap's KeySet, EntrySet, and values are null while table is not empty
我正在讀取一個data.ser
文件,用保存的數據填充一些HashMap
。
雖然Map
具有我應該具有的值,但KeySet
, EntrySet
和值都是null。 例如,當我在調試模式下檢查時, Hashmap
“Employees”看起來像這樣:
有人能幫我弄清楚它有什么問題嗎? 這種情況怎么可能呢?
盡管地圖包含一個帶有鍵(ID)im搜索的值(Employee),但返回null值的示例:
這是一個UnmodifiableMap 。
您提到的數據成員初始化為null:
private transient Set<K> keySet = null;
private transient Set<Map.Entry<K,V>> entrySet = null;
private transient Collection<V> values = null;
相同名稱的方法訪問底層Map以返回非null值,並在第一次調用它們時將它們緩存在這些變量中。
public Set<K> keySet() {
if (keySet==null)
keySet = unmodifiableSet(m.keySet());
return keySet;
}
public Set<Map.Entry<K,V>> entrySet() {
if (entrySet==null)
entrySet = new UnmodifiableEntrySet<K,V>(m.entrySet());
return entrySet;
}
public Collection<V> values() {
if (values==null)
values = unmodifiableCollection(m.values());
return values;
}
因此,如果您將調用這三種方法,您將看到這些數據成員不再為null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.