使用GregorianCalendar作为HashMap中的键...如何访问键?

时间:2014-04-15 17:14:19

标签: java hashmap key gregorian-calendar

我有这个HashMap,我希望使用for循环逐个访问每个密钥。这就是我所做的:

    HashMap<GregorianCalendar,ArrayList<String>> hash; //this is the HashMap I want to access
    Set<GregorianCalendar> setCalendars = hash.keySet(); //get a Set containing all the keys
    Object[] arrayCalendars = setCalendars.toArray(); //get an "Array" containing all the keys
    GregorianCalendar calendar;

    for(j = 0; j <= hash.size(); j++){
        calendar = arrayCalendars[j]; //this is the line I'm having trouble with
    }

arrayCalendars [j]返回一个Object []类型的元素,但是我希望它返回一个GregorianCalendar类型,这样我就可以访问月和日变量了。有没有办法可以做到这一点?

3 个答案:

答案 0 :(得分:0)

您需要使用toArray的通用版本,它将返回GregorianCalendar[]数组:

GregorianCalendar[] arrayCalendars = setCalendars.toArray(new GregorianCalendar[setCalendars.size()]);
顺便说一句,你应该放弃在地图中使用GregorianCalendar作为关键字的想法,因为它是一个可变类。你不应该在地图中使用可变类型作为键。

答案 1 :(得分:0)

你有它(但后来你失去了它),你只需要这个 -

HashMap<GregorianCalendar,ArrayList<String>> hash; //this is the HashMap I want to access

for (GregorianCalendar calendar : hash.keySet()) {
  // calendar = arrayCalendars[j]; //this is the line I'm having trouble with
      ArrayList<String> al = hash.get(calendar);
}

答案 2 :(得分:-1)

你应该尝试使用演员。

calendar = (GregorianCalendar) arrayCalendars[j];