Отображения

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

Jim White

Java Developer

Отображения как таблицы поиска

  • Отображения — это структуры данных типа «таблица поиска»
    • Хранят «значение» по определённому «ключу»
    • По «ключу» можно получить сохранённое «значение»
  • Пример: звонок в поликлинику
    • Регистратор находит медкарту (объект значение) по имени и дате рождения (объект ключ)

Отображения работают как таблица поиска: как при звонке в регистратуру, где по имени и дате рождения находят медкарту

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

Интерфейс Map

  • Интерфейс Map определяет операции над парами ключ–значение
    • Как сохранить («put») значение в хранилище по заданному ключу
    • Как удалить («remove») значение по ключу из Map
    • Как получить значение по ключу
  • Существует несколько реализаций Map со схожим поведением
    • Популярная реализация Map — это HashMap
1 Подробнее см. https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html
Типы данных и исключения в Java

Ключи и значения HashMap

Ключи и значения Map или HashMap могут быть одного или разных типов

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

Создание HashMap

HashMap<Integer, String> map = new HashMap<Integer, String>();
  • Параметризованный конструктор HashMap принимает два типа

    • Первый тип — тип ключа

      Первый обобщённый параметр HashMap предназначен для ключей

    • Второй тип — тип значения

      Второй обобщённый параметр HashMap предназначен для значений

Типы ключа и значения в обобщённых параметрах задают типы данных для ключей и значений

  • Требуется импорт java.util.HashMap
Типы данных и исключения в Java

Методы HashMap

  • .put(key,value) — добавляет пару ключ/значение в таблицу
  • .remove(key) — удаляет пару ключ/значение по указанному ключу
  • .get(key) — получает значение из таблицы по ключу
import java.util.HashMap
...
HashMap<Integer, String> map
    = new HashMap<Integer, String>();
map.put(0, "Jim");
map.put(1, "James");
map.put(3, null);
map.put(4, "James");
map.remove(0);
System.out.println(map);
{1=James, 3=null, 4=James}
String nickname = map.get(1);
System.out.println(nickname);
James
Типы данных и исключения в Java

Collections

  • java.util.Collections — вспомогательный класс
  • Используется для сортировки, заполнения, копирования, поиска и других операций
    • Содержит только static-методы
1 См. https://docs.oracle.com/en/java/javase//21/docs/api/java.base/java/util/Collections.html
Типы данных и исключения в Java

Методы Collections

  • Добавить несколько объектов в List
    • addAll(List list, Object a, b, ...)
  • Подсчитать количество вхождений объекта в коллекцию
    • frequency(Collection c, Object o)
  • Изменить порядок объектов в List на обратный
    • reverse(List list)
  • Отсортировать объекты в List
    • sort(List list)
  • Заменить все объекты в List другим объектом
    • fill(List a, Object o)
ArrayList<String> x = new ArrayList<String>();
Collections.addAll(x,
    "milk", "bread", "eggs", "milk");
System.out.println(x);

int cnt = Collections.frequency(x, "milk"); System.out.println(cnt);
Collections.reverse(x); System.out.println(x);
Collections.sort(x); System.out.println(x);
Collections.fill(x, "sugar"); System.out.println(x);
[milk, bread, eggs, milk]

2
[milk, eggs, bread, milk]
[bread, eggs, milk, milk]
[sugar, sugar, sugar, sugar]
Типы данных и исключения в Java

Arrays

  • Иногда требуется преобразовать массив (например, int[]) в List
    • Массивы Java нельзя изменять по размеру, а элементы может потребоваться добавлять или удалять
    • List обладает бо́льшими возможностями (поиск, сортировка и т. д.)
  • java.util.Arrays — ещё один вспомогательный класс
    • Позволяет преобразовать массив Java в List
Типы данных и исключения в Java

Пример использования Arrays

String[] arrayCountries = {"France", "Japan", "Brazil", "Egypt", "China"};
List<String> countries = Arrays.asList(arrayCountries);
System.out.println(countries);
[France, Japan, Brazil, Egypt, China]
Типы данных и исключения в Java

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

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

Preparing Video For Download...