Содержание книги "Современный Java: рецепты программирования
:
простые решения трудных задач на Java 8 и 9"
Предисловие
Вступление
Глава 1. Основные понятия
1.1. Лямбда-выражения
1.2. Ссылки на методы
1.3. Ссылки на конструкторы
1.4. Функциональные интерфейсы
1.5. Методы по умолчанию в интерфейсах
1.6. Статические методы в интерфейсах
Глава 2. Пакет java.util.function
2.1. Потребители
2.2. Поставщики
2.3. Предикаты
2.4. Функции
Глава 3. Потоки
3.1. Создание потоков
3.2. Обернутые потоки
3.3. Операции редукции
3.4. Проверка правильности сортировки с помощью редукции
3.5. Отладка потоков с помощью peek
3.6. Преобразование строк в потоки и наоборот
3.7. Подсчет элементов
3.8. Сводные статистики
3.9. Нахождение первого элемента в потоке
3.10. Методы anyMatch, allMatch и noneMatch
3.11. Методы flatMap и map
3.12. Конкатенация потоков
3.13. Ленивые потоки
Глава 4. Компараторы и коллекторы
4.1. Сортировка с помощью компаратора
4.2. Преобразование потока в коллекцию
4.3. Добавление линейной коллекции в отображение
4.4. Сортировка отображений
4.5. Разбиение и группировка
4.6. Подчиненные коллекторы
4.7. Нахождение минимального и максимального значений
4.8. Создание неизменяемых коллекций
4.9. Реализация интерфейса Collector
Глава 5. Применение потоков, лямбда-выражений и ссылок на методы
5.1. Класс java.util.Objects
5.2. Лямбда-выражения и эффективная финальность
5.3. Потоки случайных чисел
5.4. Методы по умолчанию интерфейса Map
5.5. Конфликт между методами по умолчанию
5.6. Обход коллекций и отображений
5.7. Протоколирование с помощью Supplier
5.8. Композиция замыканий
5.9. Применение вынесенного метода для обработки исключений
5.10. Контролируемые исключения и лямбда-выражения
5.11. Использование универсальной обертки исключений
Глава 6. Тип Optional
6.1. Создание Optional
6.2. Извлечение значения из Optional
6.3. Optional в методах чтения и установки
6.4. Методы flatMap и map класса Optional
6.5. Отображение объектов Optional
Глава 7. Файловый ввод-вывод
7.1. Обработка файлов
7.2. Получение файлов в виде потока
7.3. Обход файловой системы
7.4. Поиск в файловой системе
Глава 8. Пакет java.time
8.1. Основные классы для работы с датами и временем
8.2. Создание даты и времени на основе существующих экземпляров
8.3. Корректоры и запросы
8.4. Преобразование java.util.Date в java.time.LocalDate
8.5. Разбор и форматирование
8.6. Нахождение часовых поясов с необычным смещением
8.7. Нахождение названий регионов по смещению
8.8. Время между событиями
Глава 9. Параллелизм и конкурентность
9.1. Преобразование последовательного потока в параллельный
9.2. Когда распараллеливание помогает
9.3. Изменение размера пула
9.4. Интерфейс Future
9.5. Завершение CompletableFuture
9.6. Координация нескольких CompletableFuture, часть 1
9.7. Координация нескольких CompletableFuture, часть 2
Глава 10. Нововведения в Java 9
10.1. Модули в проекте Jigsaw
10.2. Закрытые методы в интерфейсах
10.3. Создание неизменяемых коллекций
10.4. Интерфейс Stream: ofNullable, iterate, takeWhile и dropWhile
10.5. Подчиненные коллекторы: filtering и flatMapping
10.6. Класс Optional: методы stream, or, ifPresentOrElse
10.7. Диапазоны дат
Приложение А. Универсальные типы и Java 8
Общие сведения
Что знает каждый
Чего некоторые разработчики не осознают
Метатипы и PECS
Примеры из Java 8 API
Резюме
Предметный указатель
Об авторе
Об иллюстрации на обложке