Java Android ArrayList日历添加和获取不同
我将日历的增量日期放入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
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重新创建它们。问题仍然是一样的。。。