[英]Why does my hash map code print null?
我有以下代碼,我想打印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
后更改已定義的對象。
切勿更改用於Map
鍵的對象的內部值。 它會驅動hashCode()
值, equals()
方法,之后你的地圖就會被扔到垃圾箱里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.