Структуры данных Collections Framework

Типы данных и исключения в Java

Jim White

Java Instructor

Что такое фреймворк

  • Фреймворк — набор переиспользуемых типов, реализующих типовую функциональность
    • Примеры типов: классы и интерфейсы
    • Повышает качество приложения
    • Избавляет от необходимости писать всё с нуля
  • Фреймворки поставляются в виде пакета или пакетов Java
  • Фреймворки имеют собственные правила и рекомендации по использованию

Фреймворки предоставляют готовый код с типовой функциональностью

1 Фото: Ashkan Forouzani, Unsplash
Типы данных и исключения в Java

Типы Java

Два вида типов в Java:

  • Примитивные типы
    • byte, short, int, long, float, double, char, boolean
  • Ссылочные типы
    • Классы
    • Интерфейсы
    • Перечисления (Enums)
    • Массивы
    • ...
Типы данных и исключения в Java

Collections Framework

  • Collections Framework — встроенный набор универсальных типов структур данных Java
    • Пакет типов для хранения и работы с группой объектов
  • Определён в пакете java.util
    • Для использования типов фреймворка необходим импорт
Типы данных и исключения в Java

А как же массивы?

  • Массивы Java могут хранить группу объектов или примитивов
    • Collections Framework предлагает альтернативный набор структур данных
  • У каждого подхода есть свои плюсы и минусы
Массивы Коллекции
Фиксированный размер Динамический размер (увеличиваются и уменьшаются)
Хранят примитивы или объекты Хранят только объекты
Однородные — элементы одного типа Неоднородные — объекты могут быть разных типов
Доступ к элементам через [] Доступ к объектам через методы
Специальный синтаксис инициализации {} Используется new (без специального синтаксиса)
Типы данных и исключения в Java

Типы Collections Framework

  • Collections Framework делится на два базовых типа: Collection и Map
    • Представлены двумя интерфейсами: java.util.Collection и java.util.Map
    • Оба имеют несколько реализующих классов
  • import java.util.*; — для использования любых типов Collections Framework

Collections Framework имеет два базовых типа: Collection и Map

Типы данных и исключения в Java

Collection

  • Collection определяет различные виды группировок объектов
    • Каждый вид задаётся отдельным интерфейсом
  • Упорядоченная группа объектов: List
  • Неупорядоченная группа объектов: Set
  • Группа объектов по принципу «первым пришёл — первым вышел»: Queue
    • Работает как очередь в кассу или кинотеатр
  • Методы .add(Object) и .remove(Object) изменяют любую коллекцию

Collection включает List, Set и Map

Типы данных и исключения в Java

Map

  • Структура данных Map работает как телефонная книга или словарь
    • Объекты-«ключи» -> объекты-«значения»
    • В телефонной книге: имя -> номер телефона
    • В словаре: слово -> его определение
  • Для изменения Map используется объект-ключ
    • .put(Object key, Object value) — добавить в Map
    • .remove(Object key) — удалить из Map
  • Существует много видов Map, например HashMap

Структура данных Map работает как телефонная книга или словарь

Типы данных и исключения в Java

Обобщённые типы (Generics)

  • Коллекции и Map являются «параметризованными»
    • Обобщённые типы (generics) Java задают типы объектов в Collection или Map
    • Синтаксис обобщений: <Class> с параметризованным типом
      • < > называется оператором diamond
ArrayList<String> list = new ArrayList<String>();  // Construct with generics
Типы данных и исключения в Java

Обобщённые типы и типобезопасность

  • Обобщённые типы обеспечивают более строгую типизацию
    • Ограничивают допустимые объекты в Collection и Map
ArrayList<String> list = new ArrayList<String>();
list.add("hello");  // Adding a String is ok
list.add(new Integer(5));  // Trying to add an Integrer causes compiler error
Типы данных и исключения в Java

Без использования обобщённых типов

ArrayList list2 = new ArrayList();  // Legal but non-specific

list2.add("hello");                 // Now any type of object can be added
list2.add(new Integer(5));
Типы данных и исключения в Java

Объявление и присваивание переменной

  • Объявление и присваивание переменной можно выполнять раздельно
ArrayList<String> list = new ArrayList<String>(); //Single line declaration and assignment

ArrayList<String> list2;    // Variable declaration...
list2 = new ArrayList<String>();  //... and assignement can be 2 statements
Типы данных и исключения в Java

Давайте потренируемся!

Типы данных и исключения в Java

Preparing Video For Download...