Проверьте, совпадают ли даты из списка <Date> - PullRequest
0 голосов
/ 30 июля 2010

Не знаю, правильно ли я это описал. У меня есть несколько списков дат в Java. Теперь мне нужно знать, когда список содержит как минимум 4 даты, которые следуют друг за другом. например «2010-06-27, 2010-06-28, 2010-06-29, 2010-06-30». Мне просто нужно понять, с чего начать .... Спасибо!

Ответы [ 5 ]

1 голос
/ 30 июля 2010

Что по этому поводу:

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;
}
1 голос
/ 30 июля 2010

Перебирайте список и сравнивайте каждую дату со следующей, пока у вас не получится четыре, соответствующих вашим критериям.

0 голосов
/ 30 июля 2010

Теперь это мой подход.возвращает список целых чисел, представляющих длину каждой серии дней подряд в этом периоде времени.Спасибо Рассел за ваш метод.Я пытался сравнитьto () с датой, пока не понял, что возвращаемое значение не соответствует дням, когда две сравниваемые даты отделены друг от друга.

0 голосов
/ 30 июля 2010

Преобразуйте дату в миллисекундах с помощью классов даты / календаря, и тогда сравнение будет тривиальным.

0 голосов
/ 30 июля 2010

Это мой подход ...

    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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...