Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android ArrayList日历添加和获取不同_Java_Android_Arraylist_Calendar_Add - Fatal编程技术网

Java Android ArrayList日历添加和获取不同

Java Android ArrayList日历添加和获取不同,java,android,arraylist,calendar,add,Java,Android,Arraylist,Calendar,Add,我将日历的增量日期放入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.si

我将日历的增量日期放入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));
}
Calendar a=Calendar.getInstance();
ArrayList b=新的ArrayList();
对于(int i=0;i0?1:0);
b、 添加(a);
}

对于(int i=0;i而言,问题在于您正在将相同的
日历实例添加到
数组列表中,因此,当您要将其打印出来时,所有日期都是相同的

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

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

相反,考虑将日期存储为字符串,因为这比创建多个
Calendar
对象的开销要小。

内存优化程度最高的方法可能是通过按
a.toString()
在数组列表中按字符串


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

问题仍然是一样的。。。