Фильтр списка Java по дате - PullRequest
       8

Фильтр списка Java по дате

0 голосов
/ 31 августа 2018

Я пытаюсь использовать мой первый фильтр в FilteredList, но, конечно, он не работает.

public class ListRemove {

    public static void main(String[] args) {

        ObservableList<CashBalance> cashBalanceList = FXCollections.observableArrayList();

        LocalDate f1 = LocalDate.of(2011, Month.JANUARY, 1);
        LocalDate f2 = LocalDate.of(2015, Month.AUGUST, 2);

        CashBalance c1 = new CashBalance();
        CashBalance c2 = new CashBalance();
        c1.setData(f1);
        c2.setData(f2);

        cashBalanceList.setAll(c1, c2);

        FilteredList<CashBalance> filteredList = new FilteredList<CashBalance>(cashBalanceList);

        filteredList.stream().filter(p -> p.getData().isAfter(LocalDate.of(2012, Month.JUNE, 2)))
                .collect(Collectors.toList());

        for (CashBalance l : filteredList) {

            System.out.println(l.getData());

        }
    }
}

Должен показывать одну дату, но отображаются две. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Ваш подход не фильтрует список, но копирует элементы в новый список с некоторыми отфильтрованными элементами. Это оставляет оригинал без изменений. Вам необходимо присвоить этот новый список переменной, чтобы использовать его.

Однако вы используете класс FilteredList, который обеспечивает отфильтрованное представление другого списка. Вы можете установить предикат фильтра, используя метод setPredicate

filteredList.setPredicate(p -> p.getData().isAfter(LocalDate.of(2012, Month.JUNE, 2)));

Или в конструкторе в качестве второго параметра

 FilteredList<CashBalance> filteredList = new FilteredList<CashBalance>(cashBalanceList, p -> p.getData().isAfter(LocalDate.of(2012, Month.JUNE, 2)));
0 голосов
/ 31 августа 2018

изменить на:

filteredList = 
    filteredList
     .stream()
     .filter(
               p -> p.getData().isAfter(LocalDate.of(2012, Month.JUNE, 2))
    ).collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...