Java 中映射的浅层副本
2022-08-31 09:38:03
据我所知,有几种方法可以(也许还有其他方法)在Java中创建一个浅层副本:Map
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();
}