@Nikita07

Как работает этот код?

Всем привет, помогите пожалуйста разобраться с участком кода на JAVA
List<String> result = PRE_SORTED_FIELDS_LIST
                .stream()
                .filter(fieldNames::remove)
                .collect(Collectors.toList());

Не до конца понимаю, что происходит тут - .filter(fieldNames::remove) и строкой ниже
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
Senior Junior Roo
У .filter контракт - оставить в стриме только те элементы, по которым вернётся true. fieldNames::remove удаляет элемент из списка fieldNames. Если элемент присутствовал - возвращается true, в противном случае false. Т.о. в стриме остаются только те элементы, которые присутствовали и были удалены из fieldNames.
.collect(Collectors.toList()) собирает стрим в обычный лист.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
al_gon
@al_gon
в .filter(fieldNames::remove) fieldNames::remove это придикат
Соответсвенно, отфильтровать по придикату.

Если в PRE_SORTED_FIELDS_LIST есть "A" и "B", а в fieldNames только "B",
то в результате будет только "B", а в fieldNames будет пусто, ибо remove пройдёт и придикат даст true.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы