Элегантный код Java, Дженерики и коллекции, Нафтален М., Уодлер Ф., 2025

Подробнее о кнопках "Купить"

По кнопкам "Купить бумажную книгу" или "Купить электронную книгу" можно купить в официальных магазинах эту книгу, если она имеется в продаже, или похожую книгу. Результаты поиска формируются при помощи поисковых систем Яндекс и Google на основании названия и авторов книги.

Наш сайт не занимается продажей книг, этим занимаются вышеуказанные магазины. Мы лишь даем пользователям возможность найти эту или похожие книги в этих магазинах.

Список книг, которые предлагают магазины, можно увидеть перейдя на одну из страниц покупки, для этого надо нажать на одну из этих кнопок.

Элегантный код Java, Дженерики и коллекции, Нафтален М., Уодлер Ф., 2025.
        
   Это обновленное издание самого известного руководства охватывает Java 21 и предлагает актуальную и точную информацию о параметризованных типах (дженериках). Вы узнаете все необходимое для эффективного использования и написания параметризованных API. В книге подробно описана библиотека коллекций, проведено сравнение потоков и коллекций, рассмотрен выбор оптимальной модели. Это поможет читателю получить максимум пользы от платформенной библиотеки.
Книга адресована всем, кто хочет узнать больше о Java. Предполагается, что читатель владеет начальными навыками программирования на этом языке и знаком с основными понятиями.

Элегантный код Java, Дженерики и коллекции, Нафтален М., Уодлер Ф., 2025


Дженерики.
Дженерики - мощное, а временами спорное средство языка программирования Java. В этой части книги описываются дженерики с использованием каркаса коллекций в качестве источника примеров. Полное введение в каркас коллекций составляет предмет второй части книги.

Первые четыре главы посвящены теоретическим основам параметризации типов. Глава 1 содержит общий обзор параметризованных типов и методов. В главе 2 рассказывается, как работает подтипизация, и объясняется, как джокеры позволяют использовать подтипизацию в контексте параметризованных типов. В главе 3 описывается работа параметризованных типов с интерфейсом Comparable, для чего требуется понятие границ для переменных-типов. В главе 4 рассматривается работа параметризованных типов с различными объявлениями, в том числе конструкторами, статическими членами и вложенными классами. Освоив весь этот материал, вы сможете эффективно использовать дженерики Java в простых ситуациях.

ОГЛАВЛЕНИЕ. 
Об авторах.
Об иллюстрации на обложке.
Предисловие от издательства.
Предисловие.
Благодарности за второе издание.
Для кого написана эта книга.
Где взять примеры кода.
Графические выделения.
Утверждения.
Как с нами связаться.
Предисловие к первому изданию.
Благодарности, включенные в первое издание.
ЧАСТЬ I. ДЖЕНЕРИКИ.
Глава 1. Введение.
Параметризованные типы.
Дженерики и шаблоны.
Параметризованные методы и varargs-аргументы.
Примитивные и ссылочные типы.
Заключение.
Глава 2. Подтипизация и джокеры.
Подтипизация и принцип подстановки.
Джокеры.
Джокеры с extends.
Джокеры с super.
Принцип получения и вставки.
Массивы.
Ограниченные или неограниченные?.
Использование неограниченного джокера.
Использование ограниченного джокера.
Запоминание джокера.
Ограничения на джокеры.
Создание экземпляра.
Вызовы обобщенных методов.
Супертипы.
Заключение.
Глава 3. Сравнение и границы.
Интерфейс Comparable.
Контракт интерфейса Comparable.
Согласованность с equals.
Сравнение целочисленных значений.
Максимальный элемент коллекции.
Фруктовый пример.
Интерфейс Comparator.
Методы интерфейса Comparator.
Типы перечислений.
Множественные границы.
Мостовые методы.
Ковариантное переопределение.
Заключение.
Глава 4. Объявления.
Конструкторы.
Статические члены.
Вложенные классы.
Как работает стирание.
Заключение.
Глава 5. Сберегаемые и несберегаемые типы.
Сберегаемые типы.
Тесты экземпляров и приведения.
Непроверенные приведения.
Обработка исключений.
Параметризованные типы и массивы.
Создание параметризованного массива.
Принцип правдивости рекламы.
Как создавать массивы.
Массив рождает массив.
Классная альтернатива.
Как определить ArrayList.
Принцип непристойного обнажения.
Создание массива и vararg-аргументы.
Где требуются сберегаемые типы.
О дизайне дженериков в Java.
Стирание.
Неограниченные джокеры.
Массивы.
Arrays::copyOf.
Заключение.
Глава 6. Рефлексия.
Параметризованные типы для рефлексии.
Рефлектированные типы являются сберегаемыми.
Рефлексия для примитивных типов.
Обобщенная библиотека рефлексии.
Рефлексия для параметризованных типов.
Рефлексия параметризованных типов.
Заключение.
Глава 7. Эффективные дженерики Java.
Искореняйте предупреждения о невозможности проверки.
Обеспечивайте типобезопасность при вызове недоверенного кода.
Специализируйте для создания сберегаемых типов.
Избегайте бессмысленных переменных-типов.
Используйте обобщенные вспомогательные методы для запоминания джокера.
Приводите через простые типы, когда необходимо.
Используйте параметризованные типы массивов с осторожностью.
Используйте маркеры типов для передачи информации о типе времени выполнения.
Заключение.
ЧАСТЬ II. КОЛЛЕКЦИИ.
Глава 8. Основные интерфейсы каркаса коллекций Java.
Использование разных типов коллекций.
Set.
List.
Map.
SequencedMap.
Queue.
Упорядоченные коллекции.
SequencedCollection.
SequencedSet и NavigableSet.
Deque.
SequencedMap и NavigableMap.
Заключение.
Глава 9. Предварительные сведения.
Итерируемые объекты и итераторы.
Реализации.
Представления.
Производительность.
Память.
Счетчик команд и нотация O большое.
Неизменяемость и немодифицируемость.
Контракты.
Организация по содержимому.
Лямбда-выражения и потоки.
Параллельные потоки.
Коллекции и потокобезопасность.
Синхронизация и унаследованные коллекции.
Синхронизированные коллекции и итераторы с быстрым отказом.
Конкурентные коллекции.
Итераторы.
Заключение.
Глава 10. Интерфейс Collection.
Методы Collection.
Добавление элементов.
Удаление элементов.
Опрос содержимого коллекции.
Обеспечение доступности содержимого коллекции для дальнейшей обработки.
Использование методов коллекций.
Добавление элементов.
Удаление элементов.
Опрос содержимого коллекции.
Обеспечение доступности содержимого коллекции для последующей обработки.
Реализация Collection.
Конструкторы коллекций.
Заключение.
Глава 11. Интерфейс SequencedCollection.
Методы SequencedCollection.
Добавление элементов.
Инспектирование элементов.
Удаление элементов.
Генерирование обращенного представления.
Заключение.
Глава 12. Множества.
Определение множества: отношения эквивалентности.
Реализации интерфейса Set.
HashSet.
CopyOnWriteArraySet.
EnumSet.
UnmodifiableSet.
Представления отображений в виде множеств.
SequencedSet.
LinkedHashSet.
NavigableSet.
Методы NavigableSet.
TreeSet.
ConcurrentSkipListSet.
Сравнение реализаций множеств.
Заключение.
Глава 13. Очереди.
Методы интерфейса Queue.
Добавление элемента в очередь.
Извлечение элемента из очереди.
Использование методов очереди.
Реализации Queue.
PriorityQueue.
ConcurrentLinkedQueue.
BlockingQueue.
Методы BlockingQueue.
Использование методов BlockingQueue.
Реализации BlockingQueue.
Deque.
Методы Deque.
Реализации Deque.
BlockingDeque.
Сравнение реализаций очереди.
Заключение.
Глава 14. Списки.
Методы интерфейса List.
Методы позиционного доступа.
Методы поиска.
Методы генерирования представлений.
Методы обхода списка.
Методы, унаследованные от SequencedCollection.
Фабричные методы.
Использование методов List.
Использование методов диапазонного представления и итератора.
Реализации интерфейса List.
ArrayList.
LinkedList.
CopyOnWriteArrayList.
UnmodifiableList.
Сравнение реализаций списка.
Заключение.
Глава 15. Отображения.
Методы интерфейса Map.
Операции, подобные Iterable.
Операции, подобные Collection.
Получение представлений ключей, значений и записей.
Составные операции.
Фабричные методы.
Интерфейс Map.Entry.
Использование методов Map.
Реализации интерфейса Map.
IdentityHashMap.
UnmodifiableMap.
SequencedMap.
Методы SequencedMap.
LinkedHashMap.
NavigableMap.
Получение компаратора.
Получение диапазонных представлений.
Получение ближайших соседей.
Другие представления.
TreeMap.
ConcurrentMap.
ConcurrentHashMap.
ConcurrentNavigableMap.
ConcurrentSkipListMap.
Сравнение реализаций отображения.
Заключение.
Глава 16. Класс Collections.
Обобщенные алгоритмы.
Изменение порядка элементов списка.
Изменение содержимого списка.
Нахождение экстремальных значений в коллекции.
Нахождение конкретных значений в списке.
Фабрики коллекций.
Обертки.
Синхронизированные коллекции.
Немодифицируемые коллекции.
Проверяемые коллекции.
Прочие методы.
addAll.
asLifoQueue.
disjoint.
enumeration.
frequency.
list.
newSequencedSetFromMap и newSetFromMap.
reverseOrder.
Заключение.
Глава 17. Наставление по использованию каркаса коллекций Java.
Избегайте анемичных моделей предметной области.
Не забывайте о «владельцах» коллекций.
Отдавайте предпочтение неизменяемым объектам в качестве элементов множества или ключей отображения.
Соблюдайте баланс интересов клиента и библиотеки при проектировании API.
Пользуйтесь возможностями записей.
Отдавайте предпочтение записям перед параллельными списками.
Используйте записи в качестве составных ключей.
Управляйте изменяемостью записей.
Избегайте унаследованных реализаций.
Избегайте синхронизированных оберток коллекций.
Избегайте LinkedList.
Настраивайте коллекции с помощью абстрактных классов.
Заключение.
Глава 18. Ретроспективный взгляд на дизайн.
Фундаментальные проблемы дизайна каркаса коллекций.
Желательные характеристики каркаса коллекций.
Обеспечение немодифицируемости путем создания подтипов.
Ограничения подтипов.
Не только статическая типизация.
Объединение и разделение.
Резюме.
Значения null.
Несогласованность с equals.
Сравнение Object и E.
Конкурентная модификация.
Послесловие.
Литература.
Предметный указатель.



Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Элегантный код Java, Дженерики и коллекции, Нафтален М., Уодлер Ф., 2025 - fileskachat.com, быстрое и бесплатное скачивание.

Скачать pdf
Ниже можно купить эту книгу, если она есть в продаже, и похожие книги по лучшей цене со скидкой с доставкой по всей России.Купить книги



Скачать - pdf - Яндекс.Диск.
Дата публикации:





Теги: :: :: :: ::


Следующие учебники и книги:
Предыдущие статьи:


 


 

Книги, учебники, обучение по разделам




Не нашёл? Найди:





2026-01-07 11:54:20