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 年 12 月 11 日

しかし、それは 12/11/2012, 12/11/2012, 12/11/2012 のようになります

誰でもこれを解決する方法を知っていますか?

4

2 に答える 2

1

問題は、 の同じインスタンスを に追加しCalendarArrayListいるため、印刷するときにすべての日付が同じになることです。

1 つの解決策は、オブジェクトを複製して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

最もメモリを最適化する方法は、プッシュによって配列リストに文字列をプッシュすることa.toString()です。

そして、SimpleDateFormatter必要に応じて使用して再作成します。

于 2012-11-10T04:55:57.020 に答える