[英]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.