Объясните фрагмент кода Java SE

92
10 ноября 2021, 04:00
void removeSummerDates(Map<String, Date> map) {
    map.entrySet().removeIf(pair -> pair.getValue().getMonth() > 4 & pair.getValue().getMonth() < 8);
}

Это фрагмент кода — решение задачки по удалению летних дат из списка. Я не понимаю что за переменная pair, если это вообще переменная (в коде нигде нет её объявления). Объясните новичку в программировании что она такое или подскажите ресурс где можно прочитать про неё. Спасибо.

Answer 1

removeIf это метод который принимает тип Predicate (тип появился в Java 8). Predicate - это функциональный интерфейс который имеет всего один метод test который возвращает истинна или лож, поэтому в тело метода removeIf может быть передано лямбда выражение для которого "будет вызван метод тест предиката позже".

pair - это переменная лямбда выражения которая в твоём случае имеет тип Map.Entry<String, Date>.

Рекомендую прочитать книгу по лямбда выражениям, это тебе очень поможет Лямбда выражения в Java 8

READ ALSO
Как посчитать числа в Jpannel

Как посчитать числа в Jpannel

Я не опытный программист прошу помощи с таким вопросом как посчитать числа на JpannelИспользуя int пишет ошибку что оператор + не может быть принят...

182
Подсветка синтаксиса markdown при помощи pygments в html

Подсветка синтаксиса markdown при помощи pygments в html

Я хочу 'перевести' markdown в html, и команда (1)

118
верстка блока с 3-мя карточками

верстка блока с 3-мя карточками

дико прошу помощи :) Ситуация такая, есть блок: Они должны находится в центре своего блока и картинки как бы тоже должны быть по центру относительно...

220
Сортировка вектора объектов класса. QuickSort

Сортировка вектора объектов класса. QuickSort

Задача: Найти минимальное остовное дерево графа с помощью алгоритма КраскалаСортировку нужно реализовать самому (пользоваться библиотечной...

87