如果我知道輸入到地圖條目中的值是相同的,我會更好地檢查它是否不在地圖中,或者只是做放? 換句話說,是檢查地圖是否包含密鑰或僅放置該值會更快嗎?
if (!map.containsKey(key)){
map.put(key, value);
}
不止做map.put(key, value)
如果我知道的值是關鍵一樣好。
背景: 我正在嘗試計算將id映射到一組int值的映射的所有重疊。例如:給出{A:1,2,3; B:2,4,6; C:2,3,4; D:1,3,5}
我需要得到這張地圖:{AnB:2; AnC:2,3; AnD:1,3; BnC:2,4; AnBnC:2; AnCnD:3;}
。遞歸執行此操作不適用於我們運行堆空間的較大集。所以我通過將下一個「圖層」添加到現有圖層上來進行迭代。因此,爲了得到AnBnC,我取AnB並計算與C的交點。但這也意味着我拿AnC並計算與B的交點,它們都會給出相同的結果。
謝謝!
你認爲哪一個更簡單/更清晰?你應該使用那個。做兩個操作可能會比一個操作慢。 –
只是編輯它,如果'!containsKey',以便它仍然是一種操作。 – Logan
在java-8中考慮['Map#putIfAbsent'](https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#putIfAbsent-KV-) – bradimus