Theo tôi hiểu, có một số cách (có thể có cả những cách khác) để tạo một bản sao cạn của một Map
trong Java:
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();
Cách này có được ưu tiên hơn cách kia không, và nếu vậy, tại sao?
Một điều đáng nói là cách thứ hai đưa ra cảnh báo "Unchecked Cast". Vì vậy, bạn phải thêm @SuppressWarnings("unchecked")
vào để có được xung quanh nó, hơi khó chịu (xem bên dưới).
@SuppressWarnings("unchecked")
public Map<String, Object> getDataAsMap() {
// return a shallow copy of the data map
return (Map<String, Object>) ((HashMap<String, Object>) data).clone();
}