簡體   English   中英

當表不為空時,HashMap的KeySet,EntrySet和值為null

[英]HashMap's KeySet, EntrySet, and values are null while table is not empty

我正在讀取一個data.ser文件,用保存的數據填充一些HashMap

雖然Map具有我應該具有的值,但KeySetEntrySet和值都是null。 例如,當我在調試模式下檢查時, Hashmap “Employees”看起來像這樣:

hashmap與debugs inspect選項一起顯示:

有人能幫我弄清楚它有什么問題嗎? 這種情況怎么可能呢?

盡管地圖包含一個帶有鍵(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM