Как использовать java 8 (LAMBDA) для проверки коллекции, если все объекты периодов являются непрерывными периодами - PullRequest
0 голосов
/ 25 февраля 2020

...

public class DateLimiter {
    private Date startDate;
    private Date endDate;
 }

List<DateLimiter> period = new ArrayList<>();
period.add(1/1/2020, 31/1/2020);
period.add(1/2/2020, 29/2/2020);
period.add(1/3/2020, 1/5/2020);

period.sort((o1, o2) -> o1.getStartDate().compareTo(o2.getStartDate()));

...

Как использовать java 8 (LAMBDA) для проверки коллекции, если все объекты периодов являются непрерывными периодами, например endDate + 1 «день» должен быть равен следующему периоду startDate

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Учитывая, что вы должны использовать java.util.Date и список отсортирован, вы можете использовать функцию ниже.

public boolean isCorrect(ArrayList<DateLimiter> list) {
    for (int i = 1; i < list.size(); i++) {
        Date prevEndDate = list.get(i - 1).getEndDate();
        Date currStartDate = list.get(i).getStartDate();
        Calendar cal = Calendar.getInstance();
        cal.setTime(prevEndDate);
        cal.add(Calendar.DAY_OF_MONTH, 1);

        if (cal.getTime().equals(currStartDate)) {
            return false;
        }
    }
    return true;
}
0 голосов
/ 25 февраля 2020

Вы делаете несколько вещей неправильно или не выполняете их вообще.

  1. Попытка добавить не-строку в ArrayList, который принимает только DateLimiter объектов.
  2. Попытка добавить два элемента в ArrayList с помощью add.
  3. Не создавать экземпляры DateLimiter.

Вы также должны использовать LocalDate, а не Date.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...