powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Streams filter lambda
7 сообщений из 7, страница 1 из 1
Streams filter lambda
    #39173379
wvetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
List<Person> persons = ArrayList<Person>();

int age = 50;

persons = persons.stream().filter(p -> p.getAge() == 50).collect(Collectors.toList()); //так работает
//persons = persons.stream().filter(p -> p.getAge() == age).collect(Collectors.toList()); //как правильно передать age?


Пробовал так:
Код: java
1.
persons = persons.stream().filter((p, age) -> p.getAge() == age).collect(Collectors.toList()); //ошибка
...
Рейтинг: 0 / 0
Streams filter lambda
    #39173391
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wvetal
Код: java
1.
//persons = persons.stream().filter(p -> p.getAge() == age).collect(Collectors.toList()); //как правильно передать age?



Ну, правильно же, вроде?

wvetalПробовал так:
Код: java
1.
persons = persons.stream().filter((p, age) -> p.getAge() == age).collect(Collectors.toList()); //ошибка


А откуда у метода java.util.function.Predicate.test(T t) вдруг нарисовался второй параметр?
...
Рейтинг: 0 / 0
Streams filter lambda
    #39173427
wvetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczwvetal
Код: java
1.
//persons = persons.stream().filter(p -> p.getAge() == age).collect(Collectors.toList()); //как правильно передать age?



Ну, правильно же, вроде?
Точно, только я не уточнил один момент.
У меня age, не сразу инициализировалась, а через getter другого объекта.
Поэтому выпадала ошибка:
Local variable age defined in an enclosing scope must be final or effectively final.

Пришлось сделать так:
Код: java
1.
2.
3.
final int age;
age = user.getAge();
persons = persons.stream().filter(p -> p.getAge() == age).collect(Collectors.toList());


Спасибо.
...
Рейтинг: 0 / 0
Streams filter lambda
    #39173433
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wvetalПришлось сделать так:
Код: java
1.
2.
3.
final int age;
age = user.getAge();
persons = persons.stream().filter(p -> p.getAge() == age).collect(Collectors.toList());


Спасибо.
Ну, выкинь final и напиши объявление в одной строке с присвоением, будет effective final. Что не так-то?
...
Рейтинг: 0 / 0
Streams filter lambda
    #39173439
wvetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczНу, выкинь final и напиши объявление в одной строке с присвоением, будет effective final. Что не так-то?ОК
...
Рейтинг: 0 / 0
Streams filter lambda
    #39173802
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wvetal,

А final и есть единственное правильное решение, если age локальная для метода переменная.
...
Рейтинг: 0 / 0
Streams filter lambda
    #39173822
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery ShiskinА final и есть единственное правильное решение, если age локальная для метода переменная.
Java 8 effective final не требует явного объявления. Соответственно уменьшает синтаксический шум.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Streams filter lambda
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]