簡體   English   中英

Map.keySet何時返回null

[英]When does Map.keySet return null

我正在閱讀一些代碼,該代碼檢查Map.keySet返回的值Map.keySetnull Javadoc沒有對Map.keySet的返回值進行Map.keySet 如果地圖不包含任何內容,則為空集。

Map.keySet返回的值何時可以為null

您所引用的代碼的作者絕對缺乏對Map.keySet的理解。 正如您所提到的,java文檔顯然沒有聲明keySet方法將永遠返回null

作為示例,我只是看了keySet方法的HashMap實現,它的定義為:

public Set<K> keySet() {
      Set<K> ks = keySet;
      if (ks == null) {
          ks = new KeySet();
          keySet = ks;
      }
      return ks;
}

因此,如您所見,從方法返回的值永遠不會為null。

我還檢查了keySet方法的其他幾種實現,例如TreeMapConcurrentHashMap等,但找不到任何返回null的方法。

Map.keySet應該返回null 在文檔中隱含了keySet絕不能為null ,因為它的內容會“跟蹤” Map的內容:

該集合由地圖支持,因此對地圖的更改會反映在集合中,反之亦然。

如果允許keySet返回null則將無法實現。

Java中的Map標准實現HashMapTreeMap不會從keySet返回null 由於Map是一個接口,因此可能會開發出不正確的實現,從而為keySet返回null 但是,針對這種可能性進行編程並不是一個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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