[英]Converting immutable to mutable map java
我有一個不可變的 map,我從另一部分的方法中得到。 在處理時,我想從中刪除一個密鑰,然后進一步使用它,該密鑰始終位於 map 上。
ImmutableMap<String, Object> immutableMap = doSomethingAndGetImmutableMap();
// convert to mutable
Map<String, Object> newMutableMap = ??
newMutableMap.remove("pin");
// other code
是否有任何內置方法可以將不可變轉換為可變 map java? 我看到有幾種相反的方法,但不是從不可變到可變 map。
我使用 Maps.newHashMap 但它是最好和最有效的方法嗎?
您可以使用復制構造函數從現有的Map
簡單地創建一個新的HashMap
。
HashMap<String, Object> = new HashMap<>(immutableMap);
請注意,這是一個全新的 object。 沒有辦法使不可變的 map 可變。 那將打破抽象。 我想從概念上講,您可以為不可變的 map 設計可變包裝器,該包裝器將更改存儲在第二個(私有)map 結構中。 但番石榴似乎並不支持這一點。
這是還是
Maps.newHashMap
性能更高?
Guava Maps.newHashMap(map)
只返回new HashMap<>(map)
。 該調用將由 JIT 編譯內聯,因此一旦代碼被 JIT 編譯,現代 JVM 的性能差異應該為零。
你幾乎肯定是在浪費你的時間來微優化這種東西:
除非有什么非常奇怪的事情,否則按照上述程序會導致你不會浪費時間問這個問題。 套用1 Donald Knuth:
“過早的優化是萬惡之源” 。
1...過度簡化/斷章取義...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.