1

我把日历的增量日期添加到arraylist中,但是当我把它们循环出来时,日期都是一样的。

Calendar a = Calendar.getInstance();
ArrayList<Calendar> b = new ArrayList<Calendar>();

for (int i=0; i<3; i++) {
    a.add(Calendar.DATE, i>0 ? 1 : 0);
    b.add(a);
}

for (int i=0; i<b.size(); i++){
    Log.d("xxx", "test=" + b.get(i));
}

假设我 2012 年 10 月 11 日、2012 年 11 月 11 日、2012 年 11 月 12 日

但它像 12/11/2012、12/11/2012、12/11/2012

有谁知道如何解决这个问题?

4

2 回答 2

1

问题是您正在向您添加相同的实例,Calendar因此ArrayList当您将其打印出来时,所有日期都是相同的。

一种解决方案是克隆您的Calendar对象,为您提供不同的日期值:

for (int i=0; i < 3; i++) {
    a.add(Calendar.DATE, i > 0 ? 1 : 0);
    b.add(a);
    a = (Calendar)a.clone();
}

相反,请考虑将日期存储为字符串,因为这将减少开销,而不是创建多个Calendar对象。

于 2012-11-10T04:51:34.193 回答
1

最优化内存的方法可能是 - 通过 push 将字符串推送到数组列表中a.toString()

然后SimpleDateFormatter在需要时使用重新创建它们。

于 2012-11-10T04:55:57.020 回答