2
使用散列映射時,如果密鑰不存在,通常需要添加一個key:value
對。有條件地添加到HashMap的最佳方式,儘可能少的查找?
這樣讀得不錯,但並不儘可能優化。
if !map.contains(key) {
let val = create_val();
map.insert(key, val);
some_creation_logic(val);
} else {
let val = map[key];
some_update_logic(val);
}
雖然這個工作,它將始終做2查找。
我能得到的最接近的是使用Entry.or_insert
(或or_insert_with
),計算長度以便可以採取else
分支。
let map_len_prev = map.len();
let val = map.or_insert_with(key, create_val);
if map_len_prev != map.len() {
some_creation_logic(val);
} else {
some_update_logic(val);
}
是否有插入值更明確的方式,同時保持運行的邏輯的兩個分支爲它/不存在的情況下的方式在需要的時候?
謝謝!事實上,由於文檔目前沒有以這種方式顯示如何使用條目,所以會問這個問題。 – ideasman42
我會帶公關加入它! –