Я не знаю, правильно ли я описал это. У меня есть несколько списков дат в Java. Теперь мне нужно знать, когда список содержит не менее 4 дат, следующих друг за другом. например «2010-06-27, 2010-06-28, 2010-06-29, 2010-06-30». Мне просто нужна идея, с чего начать ... Спасибо!Проверьте, соответствуют ли даты из списка <Date>
ответ
Это мой подход ...
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;
}
Перейдите по списку и сравните каждую дату со следующей, пока у вас не будет четыре соответствующих вашим критериям.
Спасибо. Не думал об итераторе и методе compare (to) метода Date. my bad =) Thx в любом случае! – tzippy
Рад помочь, может быть, вы решите принять один из ответов здесь. – thelost
Удерживайте: цифры в глубине 'Date'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Вы можете выполнить 'compareTo()', но не ожидайте увидеть '1' как разницу между двумя последовательными днями! –
Преобразовать дату в миллисекундах с помощью дата/календарь классов, а затем Comparation тривиально.
Что об этом:
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;
}
Теперь это мой подход. возвращает список целых чисел, представляющих длину каждой серии дней в строке за этот период времени. Спасибо Расселу за ваш метод. Я попробовал compareto() Date, пока не понял, что его возвращаемое значение не представляет дни, когда две сравниваемые даты отделяются друг от друга.
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;
}
- 1. Проверьте, соответствуют ли даты в javascript
- 2. Проверьте, соответствуют ли два списка чисел
- 3. Проверьте, соответствуют ли буквы
- 4. Проверьте, соответствуют ли будущие объекты
- 5. Проверьте, соответствуют ли две даты в том же месяце
- 6. Проверьте, соответствуют ли координаты объекта
- 7. Проверьте, соответствуют ли все символы?
- 8. Проверьте, соответствуют ли совпадения паролей
- 9. Проверьте, соответствуют ли данные ответа Ajax json
- 10. Проверьте, соответствуют ли 3 значения в массиве?
- 11. Проверьте, соответствуют ли данные плановому заказу
- 12. Проверьте, соответствуют ли два математических ответа
- 13. Проверьте, соответствуют ли возвращаемые значения запроса Linq
- 14. Проверьте, соответствуют ли значения в массиве jQuery
- 15. Проверьте, не пересекаются ли даты?
- 16. Проверьте, нет ли даты между
- 17. Проверьте, выбран ли элемент из выпадающего списка
- 18. Проверьте, содержит ли ячейка значения из списка
- 19. Проверьте, содержит ли String.Contain элемент из списка
- 20. Проверьте, нет ли даты позже текущей даты
- 21. Проверьте, нет ли даты DateDSTShifted
- 22. Как определить, соответствуют ли даты в Python?
- 23. Как определить, соответствуют ли даты в Rails?
- 24. Prolog - проверьте, нет ли списка []
- 25. Проверьте, заканчивается ли строка с одной из строк из списка
- 26. Проверьте, не соответствуют ли какие-либо даты в пределах указанного месяца
- 27. Проверьте, соответствуют ли даты в диапазоне дат в веб-драйвере selenium (Java)
- 28. Проверьте, есть ли у массива ключи, которые не соответствуют списку
- 29. Проверьте, соответствуют ли две ячейки, но игнорируют пробелы и периоды
- 30. Проверьте, соответствуют ли значения в массиве ниже определенного значения
getDate() - день месяца, не будет работать через границу месяца. Кроме того, он устарел. – unbeli
Yup. Я предлагаю использовать Календарь ... Но я просто прототип метода: P –
Я думаю, что он должен сделать свое собственное кодирование: D –