Это потому, что переменная currentDate
ссылается на один экземпляр Date
, который вы добавляли в список много раз. Когда вы вызываете currentDate.setDate(currentDate.getDate() + 1)
, вы просто обновляете состояние этого же объекта, и каждый раз, когда вы вызываете datesList.add(currentDate)
, этот же объект добавляется в ArrayList
.
Также обратите внимание, что setDate()
и getDate()
являются устаревшими методами. Вам следует использовать Calendar
для манипулирования датами:
Calendar cal = Calendar.getInstance();
cal.set(2011, 5, 10);
ArrayList<Date> datesList = new ArrayList<Date>();
datesList.add(cal.getTime());
cal.add(Calendar.DATE, 1);
datesList.add(cal.getTime());
cal.add(Calendar.DATE, 1);
datesList.add(cal.getTime());
System.out.println( datesList.toString());
или, что еще лучше, Joda Time .