【问题标题】:Android ArrayList Calendar add and get is differentAndroid ArrayList Calendar add 和 get 不一样
【发布时间】:2012-11-10 03:46:52
【问题描述】:

我把日历的增量日期添加到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));
}

假设我是 10/11/2012、11/11/2012、12/11/2012

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

有人知道怎么解决吗?

【问题讨论】:

  • 问题还是一样...

标签: java android arraylist calendar add


【解决方案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 对象。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 2011-08-20
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      相关资源
      最近更新 更多