0

我在用 GregorianCalendar-Objects 填充 LinkedHashMap 时遇到问题。

我创建了一个 GregorianCalendar 开始时间。然后我将它填充到一个 ArrayList 并添加 200 毫秒 50 次。之后,我将这些值与另一个 ArrayList 中的双精度值一起填充到 Map 中。当我从地图中创建一个系统时,它只给我时间列表的最后一个值,但给我双重列表中的所有值。

starttime = new GregorianCalendar(2013, 0, 1, 13, 0, 0);
starttime.set(Calendar.MILLISECOND, 0);
GregorianCalendar time = new GregorianCalendar();
time.setTimeInMillis(starttime.getTimeInMillis());

for (int i = 0; i < 50; i++) {

    time.add(Calendar.MILLISECOND, 200);

    timeList.add(time.getTimeInMillis());

}

for (int i = 0; i < 50; i++) {

    time.setTimeInMillis(timeList.get(i));

    inputMap.put(time, valueList.get(i));   

}

for (Entry<GregorianCalendar, Double> entry : inputMap.entrySet()) {

    System.out.println(entry.getKey().getTime().toString()+" " 

    +entry.getKey().get(Calendar.MILLISECOND)+ " = " + entry.getValue());

}
4

1 回答 1

0

我找到了解决方案。问题是,那个时间是 inputMap 中的一个参考。所以你必须在填充循环中创建一个新的 GregorianCalendar。

for (int i = 0; i < 50; i++) {
    GregorianCalendar gregCal = new GregorianCalendar();
    gregCal.setTimeInMillis(starttime.getTimeInMillis());
    inputMap.put(gregCal, valueList.get(i));
    starttime.add(Calendar.MILLISECOND, 200);
}
于 2013-05-08T08:36:28.797 回答