据我了解,有几种方法(可能也有其他方法)Map
在Java中创建a的浅表副本:
Map<String, Object> data = new HashMap<String, Object>();
Map<String, Object> shallowCopy;
// first way
shallowCopy = new HashMap<String, Object>(data);
// second way
shallowCopy = (Map<String, Object>) ((HashMap<String, Object>) data).clone();
一种方法优于另一种方法吗?如果是,为什么?
值得一提的是,第二种方式会发出“未经检查的演员表”警告。因此,您必须添加内容@SuppressWarnings("unchecked")
来解决它,这有点恼人(请参阅下文)。
@SuppressWarnings("unchecked")
public Map<String, Object> getDataAsMap() {
// return a shallow copy of the data map
return (Map<String, Object>) ((HashMap<String, Object>) data).clone();
}
在Java的较新版本中(确切地说,自Java 10起),可以使用Map.copyOf静态工厂方法。但是请注意,它返回的地图不可修改!
—
Oleksandr Pyrohov,