Java for Beginner
768 subscribers
747 photos
212 videos
12 files
1.25K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Протестируйте поиск:
Вызовите findBookByTitle с существующим title — должна вывести детали книги.
Вызовите с несуществующим title — сообщение о ненахождении.
Вызовите с title, который был перезаписан — должна вернуться последняя версия книги.


Протестируйте обновление:
Добавьте книгу с существующим title — Map обновит значение, выведите сообщение в addBook.


Тестирование и отладка

После реализации протестируйте, чтобы убедиться в правильной работе Map.

Запустите проект:
Правой кнопкой на Main.java → Run 'Main.main()'.
В консоли увидите сообщения о добавлении и результаты поиска (детали книг или "не найдена").


Проверьте уникальность ключей:
Добавьте две книги с одним title — в Map должна остаться последняя, и поиск вернет её.

Отладка:
Установите breakpoint в методе addBook перед put и после — шагайте (F8) и смотрите размер Map (bookMap.size()) и значение по ключу (bookMap.get(title)).
Если ошибки: NullPointerException (если Map не инициализировано или title null) — добавьте проверки if (title != null && !title.isEmpty()).
ClassCastException — если типы не совпадают (но с generics маловероятно).


Эксперименты:
Измените реализацию Map на LinkedHashMap — проверьте, сохраняется ли порядок ключей при итерации (если добавите цикл по keySet() в print метод).
Попробуйте TreeMap — добавьте Comparator, если нужно сортировать по title (TreeMap требует Comparable для ключей).



Полезные советы для новичков
Инициализация Map: Всегда инициализируйте в конструкторе Library (bookMap = new HashMap<>();), чтобы избежать NullPointerException.
Проверка перед put: Используйте containsKey(title) для логики (если ключ существует, можно предупредить или обновить).
Null-ключи: Избегайте null в title — добавьте проверку в addBook (if (title == null) return;).
Расширение проекта: Подумайте о методе listAllBooks(), который итерирует по values() Map и вызывает printDetails на каждой книге.
Массив vs Map: Заметьте, как Map упрощает поиск по сравнению с перебором массива — это преимущество ассоциативного доступа.



Практическое задание

Задача 1: Добавьте в Library метод updateBook(String title, Book newBook), который использует containsKey для проверки и put для обновления, если книга существует.
Задача 2: В addBook добавьте проверку: Если title уже в Map, не добавляйте в массив, а обновите значение в Map и выведите "Книга обновлена".
Задача 3: В Main добавьте 4-5 книг, включая дубликат по title, протестируйте поиск и обновление — убедитесь, что Map хранит уникальные ключи.



#Java #для_новичков #beginner #Map #Practice