在Java中,Map
存放的是对象的引用而不是对象的复制体。当你将一个对象放入Map
中时,实际上是将对象的引用存储在Map
的键或值中。
这意味着,如果你修改了原始对象,Map
中存储的引用也将反映这些更改。反之亦然,如果你从 Map
中获取一个引用,并修改了这个引用所引用的对象,原始的对象也会受到影响。
例如:
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, StringBuilder> map = new HashMap<>();
StringBuilder originalValue = new StringBuilder("Original");
map.put("key", originalValue);
// 修改原始对象
originalValue.append(" Modified");
// 获取Map中的引用
StringBuilder retrievedValue = map.get("key");
System.out.println("Original Value: " + originalValue); // 输出: Original Modified
System.out.println("Retrieved Value: " + retrievedValue); // 输出: Original Modified
}
}
在上述示例中,originalValue
是一个 StringBuilder
对象,它被放入了 Map
中。修改 originalValue
的同时也修改了 Map
中存储的引用,因此获取到的值也会反映这些修改。这是因为 Map
存储的是对象引用而不是对象的拷贝。