我不知道我是否正确描述了它。 我在Java中有几个日期列表。现在我需要知道列表何时包含至少4个相互跟随的日期。例如“2010-06-27,2010-06-06,2010-06-06,2010-05-06”。 我只是想知道从哪里开始.... 谢谢!
答案 0 :(得分:1)
迭代列表并将每个日期与下一个日期进行比较,直到您有四个匹配的条件。
答案 1 :(得分:1)
这个怎么样:
public static boolean checkList(List<Date> list) {
int count = 0;
for (int i = 0; i < list.size()-1; ++i) {
if (list.get(i).after(list.get(i+1))) {
count = 0;
} else {
++count;
if (count == 4) {
return true;
}
}
}
return false;
}
答案 2 :(得分:0)
这是我的方法......
public List<List> getList(List<List<Date>> lists, int num) {
List<List> result = new ArrayList<List>();
for (List list : lists) {
Collections.sort(list);
if (checkList(list, num)) {
result.add(list);
}
}
return result;
}
public boolean checkList(List<Date> list, int num) {
int count = 0;
for (int i = 0; i < list.size() - 1; i++) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(list.get(i));
calendar1.set(Calendar.DAY_OF_MONTH,calendar1.get(Calendar.DAY_OF_MONTH)+1);
calendar1.set(Calendar.HOUR_OF_DAY,0);
calendar1.set(Calendar.MINUTE,0);
calendar1.set(Calendar.MILLISECOND,0);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(list.get(i + 1));
calendar2.set(Calendar.HOUR_OF_DAY,0);
calendar2.set(Calendar.MINUTE,0);
calendar2.set(Calendar.MILLISECOND,0);
if (calendar1.equals(calendar2)) {
count++;
} else {
count = 0;
}
if (count >= num) {
return true;
}
}
return false;
}
答案 3 :(得分:0)
将日期(以毫秒为单位)转换为日期/日历类,然后比较非常简单。
答案 4 :(得分:0)
现在就是我的方法。 返回一个整数列表,表示该时间段内一行中每个天数的长度。谢谢罗素的方法。我尝试了Date的compareto(),直到我意识到它的返回值并不代表两个比较日期彼此分开的日子。
public List<Integer> countdaysinarow(List<Date> dates){
int daysinarow = 0;
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < dates.size() - 1; i++) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(dates.get(i));
Calendar cal2 = Calendar.getInstance();
cal2.setTime(dates.get(i + 1));
cal1.set(Calendar.DAY_OF_YEAR, cal1.get(Calendar.DAY_OF_YEAR) + 1);
if(cal1.equals(cal2)){
daysinarow++;
}
else if(daysinarow > 0){
list.add(new Integer(daysinarow));
daysinarow = 0;
}
if(daysinarow != 0 && (i == dates.size() - 2)){
list.add(new Integer(daysinarow));
}
}
return list;
}