java从一个List<Date>创建一个List<List<Date>>列表,该列表包含随后放入列表中的所有日期
我希望你能理解我。我很难用英语描述。 所以我有一个排序日期对象的列表。现在我想把所有的日期排成一行(12/16/09,12/17/09,12/18/09…)在他们自己的列表中。独立日期也应放在自己的清单中
所以从(12/01/09; 12/02/09; 12/03/09; 12/06/09; 12/10/09; 12/17/09; 12/18/09; 12/31/09)
我想创造
[(12/01/09; 12/02/09; 12/03/09)(12/06/09)(12/10/09)(12/17/09; 12/18/09)(12/31/09)]
我的代码有效。但这太复杂了,我想知道是否有更简单的方法。不幸的是,我不能利用乔达的时间。也许以前有人做过
public List<List<Date>> listOfDatestoList(List<Date> dates){
List<List<Date>> list = new ArrayList<List<Date>>();
List<Date> theseDates = new ArrayList<Date>();
if(dates.size() == 1){
theseDates.add(dates.get(0));
list.add(theseDates);
return list;
}
for (int i = 0; i < dates.size() - 1; i++) {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
//Die ersten beiden Daten der Liste werden verglichen
cal1.setTime(dates.get(i));
cal2.setTime(dates.get(i + 1));
cal1.add(Calendar.DAY_OF_YEAR, 1);
if(cal1.equals(cal2)){
theseDates.add(dates.get(i));
}
else if(theseDates.size() > 0){
theseDates.add(dates.get(i));
List<Date> tempList = new ArrayList<Date>();
for(Date date : theseDates){
tempList.add(date);
}
list.add(tempList);
theseDates = new ArrayList<Date>();
}
else{
List<Date> tempList = new ArrayList<Date>();
tempList.add(dates.get(i));
list.add(tempList);
}
if(i == dates.size() - 2){
if(cal1.equals(cal2)){
theseDates.add(dates.get(i + 1));
}
if(theseDates.size() > 0 ){
list.add(theseDates);
theseDates = new ArrayList<Date>();
}
else{
List<Date> tempList = new ArrayList<Date>();
tempList.add(dates.get(i+1));
list.add(tempList);
}
}
}
return list;
}
# 1 楼答案
一次尝试,未经测试,但应该接近您需要的(一些日期代码伪编码)