[英]Is Map.containsKey() useful in a Map that has no null values?
在下面的代碼中:
if (map.containsKey(key)) {
map.remove(key);
}
查看性能,在嘗試從地圖中刪除值之前首先執行Map.containsKey()
檢查是否有用?
同樣的問題是檢索值,如果您知道地圖不包含null
值,首先執行包含檢查是否有用?
if (map.containsKey(key)) {
Object value = map.get(key);
}
在嘗試從地圖中刪除值之前首先執行Map.containsKey()檢查是否有用?
不,這會適得其反:
如果要無條件地刪除該項,只需調用map.remove(key)
。
同樣的問題是檢索值
這里適用相同的邏輯。 當然你需要檢查結果為null
,所以在這種情況下, if
留在那里。
請注意,此清理練習首先是關於可讀性,然后是關於性能的。 訪問地圖是一種快速操作,因此訪問它兩次不太可能導致重大性能問題,除了一些相當極端的情況。 但是,刪除額外的條件將使您的代碼更具可讀性,這非常重要。
remove()
上的Java文檔聲明只有在map包含這樣的元素時才會刪除元素。 所以remove()
之前的contains()
檢查是多余的。
這是主觀的(完全是樣式的情況),但是對於你正在檢索值的情況,我更喜歡對null檢查的contains(key)
調用。 布爾比較感覺比空比較好。 如果Map<K,V>.get(key)
返回Optional<V>
Map<K,V>.get(key)
我可能會有不同的感受。
此外,值得注意的是“給定無空鍵”斷言是一個相當難以證明的斷言,具體取決於Map的類型(您可能不知道)。 一般來說,我認為對檢索的冗余檢查是(或者只是感覺 )更安全,以防萬一在其他地方出現錯誤(敲木頭,檢查黑貓,並避免出路上的梯子)。
對於移除操作,您可以找到。 檢查沒用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.