Курс обучения программированию на Java | Сайт проекта

< Курс обучения программированию на Java >

Вернуться к содержанию курса

Работа с коллекциями в Java

Материалы для самоподготовки

Основные материалы - Java Collections

  1. Видео: Learn - Java Collections
  2. Urvanov: Коллекции
  3. Habr: Обзор коллекции ArrayList
  4. Habr: Обзор коллекции LinkedList
  5. Habr: Обзор коллекции HashMap
  6. Habr: Java собеседование. Коллекции
  7. Habr: Общий справочник по Java Collections Framework

Основные материалы - Java Generics

  1. Urvanov: Обобщения

Основные материалы - Java Stream Api

  1. Urvanov: Коллекции - Stream
  2. Java 8 Stream Tutorial

Дополнительные материалы - Java Collections

  1. Jenkov: Java Collections Tutorial

Дополнительные материалы - Java Generics

  1. Habr: Пришел, увидел, обобщил

Дополнительные материалы - Java Stream Api

  1. Habr: Шпаргалка Java программиста. Java Stream API
  2. Видео: Stream Api (Часть 1)
  3. Видео: Stream Api (Часть 2)

Практическая работа

Репозиторий с шаблоном практической работы

Вопросы для самоконтроля

Java - Collections

  1. Что такое коллекция? Для чего она необходима?
  2. Назовите основную иерархию коллекций (интерфейсы и их основные реализации).
  3. Расскажите кратко о предназначении каждого вида коллекции. Чем она удобна? Каковые особенности ее работы?
  4. В чем преимущество коллекций на фоне массивов?
  5. Как создать коллекцию из массива?
  6. Как внутри устроен ArrayList?
  7. Как внутри устроен LinkedList?
  8. Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
  9. Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
  10. Как происходит удаление элементов из LinkedList? Что происходит с элементами в LinkedList при удалении одного из них?
  11. Как сравнить элементы двух коллекий? Как узнать, что первая коллекция содержит все те же элементы, что и вторая?
  12. Дайте определение понятиям Iterator и Iterable.
  13. Для чего нужно коллекция TreeSet? Что такое Comparator и Comparable, как они связаны с этой коллекцией?
  14. Устройство HashMap? Как зависит HashMap от реализации метода hashCode? Что такое корзины (бакеты) в HashMap?
  15. Как получить все ключи HashMap?
  16. Как получить все значения HashMap?
  17. Расскажите по шагам, что происходит при вставке элементов в HashMap? А если будет вставка по одинаковому ключу? Если по разным? Что лучше использовать в качетве ключа?
  18. В чем разница между HashMap, SortedMap, TreeMap?
  19. Какие коллекции реализуют интерфейс Set? В чем особенность данных коллекций? Как они работают? Как зависят коллекции типа Set от реализации метода equals?
  20. В каких случаях стоит использовать Queue? Чем Queue отличается от Deque?

Java - Generics

  1. Что такое ковариантность, контрвариантность и инвариантность? Приведите примеры из языка Java
  2. Что отличает List<String> parsedWords = ... от просто List parsedWords = ...?
  3. При объявлении типов переменных, что предпочтительнее List<Student> student = ... или ArrayList<Student> student = ...?
  4. Что такое дженерики? Для чего они нужны?
  5. Что означает List<?>? Стоит ли использовать эту запись?

Java - Stream Api

  1. Что такое Stream? Как создать Stream? Что он позволяет? В чем разница между Collection и Stream?
  2. Какие существуют способы создания стрима?
  3. Что такое Optional?
  4. Для чего нужен метод collect() в стримах? Какие стандартные реализации коллекторов существуют?
  5. Для чего в стримах применяются методы forEach() и forEachOrdered()?
  6. Для чего в стримах предназначены методы map() и mapToInt(), mapToDouble(), mapToLong()?
  7. Какова цель метода filter() в стримах?
  8. Для чего в стримах предназначен метод limit()?
  9. Для чего в стримах предназначен метод sorted()?
  10. В чем разница между терминальными и конвейерными операциями?
  11. Что будет выведено в консоль?
    String collect = IntStream.range(1, 4)
         .mapToObj(i -> "a" + i)
         .map(String::toUpperCase)
         .sorted(Comparator.reverseOrder())
         .collect(Collectors.joining("-"));
    System.out.println(collect);