Содержание книги "Лямбда-выражения в Java 8
:
функциональное программирование – в массы"
Об авторе
Предисловие
Глава 1. Введение
Зачем понадобилось снова изменять Java?
Что такое функциональное программирование?
Пример предметной области
Глава 2. Лямбда-выражения
Наше первое лямбда-выражение
Как опознать лямбда-выражение
Использование значений
Функциональные интерфейсы
Выведение типов
Основные моменты
Упражнения
Глава 3. Потоки
От внешнего итерирования к внутреннему
Что происходит на самом деле
Наиболее распространенные потоковые операции
collect(toList())
map
filter
flatMap
max и min
Проявляется общий принцип
reduce
Объединение операций
Рефакторинг унаследованного кода
Несколько потоковых вызовов
Функции высшего порядка
Полезное применение лямбда-выражений
Основные моменты
Упражнения
Упражнения повышенной сложности
Глава 4. Библиотеки
Использование лямбда-выражений в программе
Примитивы
Разрешение перегрузки
Аннотация @FunctionalInterface
Двоичная совместимость интерфейсов
Методы по умолчанию
Методы по умолчанию и наследование
Множественное наследование
Три правила
Компромиссы
Статические методы в интерфейсах
Тип Optional
Основные моменты
Упражнения
Задача для исследования
Глава 5. Еще о коллекциях и коллекторах
Ссылки на методы
Упорядочение элементов
Знакомство с интерфейсом Collector
Порождение других коллекций
Порождение других значений
Разбиение данных
Группировка данных
Строки
Композиция коллекторов
Рефакторинг и пользовательские коллекторы
Редукция как коллектор
Усовершенствование интерфейса коллекций
Основные моменты
Упражнения
Глава 6. Параллелизм по данным
Параллелизм и конкурентность
Почему параллелизм важен?
Параллельные потоковые операции
Моделирование
Подводные камни
Производительность
Параллельные операции с массивами
Основные моменты
Упражнения
Глава 7. Тестирование, отладка и рефакторинг
Когда разумно перерабатывать код с использованием лямбда-выражений
Инкапсуляция внутреннего состояния
Переопределение единственного метода
Поведенческий паттерн «пиши все дважды»
Автономное тестирование лямбда-выражений
Использование лямбда-выражений в тестовых двойниках
Отложенное вычисление и отладка
Протоколирование и печать
Решение: метод peek
Точки останова в середине потока
Основные моменты
Глава 8. Проектирование и архитектурные принципы
Паттерны проектирования и лямбда-выражения
Паттерн Команда
Паттерн Стратегия
Паттерн Наблюдатель
Паттерн Шаблонный метод
Предметно-ориентированные языки с поддержкой лямбда-выражений
Предметно-ориентированный язык на Java
Как это делается
Оценка
Принципы SOLID и лямбда-выражения
Принцип единственной обязанности
Принцип открытости-закрытости
Принцип инверсии зависимости
Что еще почитать
Основные моменты
Глава 9. Конкурентное программирование и лямбда-выражения
Зачем нужен неблокирующий ввод-вывод?
Обратные вызовы
Архитектуры на основе передачи сообщений
Пирамида судьбы
Будущие результаты
Завершаемые будущие результаты
Реактивное программирование
Когда и где
Основные моменты
Упражнения
Глава 10. Что дальше?
Алфавитный указатель