在 HashMap 中用作键时比较 java 中的日期

2De*_*Dee 4 java date hashmap

我试图使用 HashMapjava.util.Date作为键,但我遇到了这个奇怪的问题。在执行以下操作时,我打印的是 false。

Date testDate = new Date(timeInLongFormat);

HashMap<Date,Integer> datesAndInts;
datesAndInts.put(testDate, 0);

Iterator iterator = datesAndInts.keySet().iterator();  

while (iterator.hasNext()) {  
    String key = iterator.next().toString();
    System.out.println("comparing " + testDate + "with " + key + " result is " + testDate.equals(key)); 
    // this call to equals() returns false.
    Integer testInt = datesList.get(key); // testInt is null, since the Date key cannot be found ...
}
Run Code Online (Sandbox Code Playgroud)

我原以为作为键插入的日期和由 keySet 返回的日期是相同的,但它们不是。这是正常行为吗?为什么 ?我应该只比较时间或其他东西来实现我自己的 Date 子类吗?

Ale*_* C. 6

您正在将一个Date对象与一个对象进行比较String

Iterator<Date> iterator = datesAndInts.keySet().iterator();  
while (iterator.hasNext()) {  
    Date key = iterator.next();
    System.out.println("comparing " + testDate + "with " + key + " result is " + testDate.equals(key)); 
    // this call to equals() returns true now.
}
Run Code Online (Sandbox Code Playgroud)