Java 为什么我的哈希映射代码打印为空?
我有以下代码,我想打印Java 为什么我的哈希映射代码打印为空?,java,null,hashmap,Java,Null,Hashmap,我有以下代码,我想打印x、y和z。当我这样做的时候,我期望分别是(1969,21,7),(1969,4,12),和(1969,21,7)。相反,我得到的是nullnullnull 我的问题是,为什么下面的代码打印x、y和z的空值而不是实际日期 import java.util.HashMap; import java.util.GregorianCalendar; public class GregorianCalenderTest { public static void main
x
、y
和z
。当我这样做的时候,我期望分别是(1969,21,7)
,(1969,4,12)
,和(1969,21,7)
。相反,我得到的是null
null
null
我的问题是,为什么下面的代码打印x、y和z的空值而不是实际日期
import java.util.HashMap;
import java.util.GregorianCalendar;
public class GregorianCalenderTest {
public static void main(String[] args) {
HashMap st = new HashMap();
GregorianCalendar x = new GregorianCalendar(1969, 21, 7);
GregorianCalendar y = new GregorianCalendar(1969, 4, 12);
GregorianCalendar z = new GregorianCalendar(1969, 21, 7);
st.put(x, "human in space");
x.set(1969, 4, 12);
System.out.println(st.get(x));
System.out.println(st.get(y));
System.out.println(st.get(z));
}
}
这里:x.set(1969,4,12)代码>在放入映射后,更改已定义的对象
切勿更改用于Map
键的对象的内部值。它会停止hashCode()
value、equals()
方法,然后你的地图就会被扔进垃圾箱。因此,即使在打印y
和z
时,这些值也会在该点变为null?你在做什么是危险的。此外,您的映射只包含一个键值对,为什么希望在这里看到3个非空值?