当使用 Object 作为类型时,我很难理解 HashMap。
在这里,我创建了两个对象,一个字符串和一个整数,并为其分配了一个值。然后我将这些对象添加到 HashMap。然后更改字符串和整数对象的值。但是当尝试使用 HashMap.get()
引用它们时,它会显示原始值。
我假设当将值放在 HashMap 上时,会以某种方式在 HashMap 实例中创建一个新的未更改对象,而不是链接底层原始对象?
代码如下:
import java.util.HashMap;
import java.util.Map;
public class Test1 {
//Create objects
static int integ=1;
static String strng="Hi";
//Create HashMap
static Map<String, Object> objMap = new HashMap(); //Map of shipments
public static void main(String[] args) {
//Insert objects in HashMap
objMap.put("integer", integ);
objMap.put("string", strng);
//Check the values
System.out.println(objMap.get("integer"));
System.out.println(objMap.get("string"));
//Change values of underlying object
integ=2;
strng="Bye";
//Check values again
System.out.println(objMap.get("integer"));
System.out.println(objMap.get("string"));
}
}
输出:
debug:
1
Hi
BUILD SUCCESSFUL (total time: 8 seconds)
最佳答案
当你这样做时:
integ=2;
strng="Bye";
您只是更改了对对象的引用,而不是对象本身。
对于 Integer
和 String
,您不能按原样更改对象 immutable
因此,如果您想更改 map 中的值,那么解决方案是:
- 从 map 中删除之前的值。
- 改变值(value)观
- 将它们添加到您的 map
关于java - 在 HashMap 中存储多个类型对象并检索它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32886291/