Map в Java. Hashmap в Java

FacebooktwittertumblrFacebooktwittertumblr

Данная статья:


Привет! Это статья про Карты (Map), один из способов хранения данных в Java.

Что такое карта (Map)

К сожалению, карта (Map) в Java не имеет никакого отношения к картам из реального мира 🙂 Ну или почти никакого.

В программировании, карта (Map) - это структура данных, в которой объекты хранятся не по одному, как во всех остальных, а в паре "ключ - значение".

Ну вот представьте, что у нас есть обычный массив строк, в котором хранятся, например, имена людей - Вася, Катя, Лена:

Тем не менее, в карте мы храним пары "ключ-значение" - и обращаться к элементам мы будем не по индексам, а по ключам. В нашем случае ключ - это дата рождения:

Причем ключем может быть что угодно - число, строка или какой-нибудь другой объект.

Какие есть виды карт (map) в Java

Cреди основных реализаций можно назвать:

  • HashMap
  • LinkedHashMap
  • TreeMap
  • Hashtable

Если представить в виде диаграммы, будет выглядеть так:

Но для начала этого явно многовато 🙂 Поэтому по теме "map в Java" мы чуть позже напишем несколько статей. А пока эта статья будет как вводная с основным акцентом на HashMap. 

Давайте посмотрим, чем они друг от друга отличаются.

  • HashMap - хранит значения в произвольном порядке, но позволяет быстро искать элементы карты. Позволяет задавать ключ или значение ключевым словом null.
  • LinkedHashMap - хранит значения в порядке добавления.
  • TreeMap - сама сортирует значения по заданному критерию. TreeMap используется либо с Comparable элементами, либо в связке с Comparator. Смотрите статью "Интерфейсы Comparable и Comparator".
  • Hashtable - как HashMap, только не позволяет хранить null и синхронизирован с точки зрения многопоточности - это значит, что много потоков могут работать безопасно с Hashtable. Но данная реализация старая и медленная, поэтому сейчас уже не используется в новых проектах.

Можно сказать, что для начала Вам хватит знать и уметь работать с HashMap. Именно на ней мы и будем приводить примеры.

Синтаксис HashMap

Создание объекта типа Map похоже на создание коллекций - только мы должны задавать два типа - тип ключа и тип значения:

Операции с Map

Ниже мы рассмотрим 6 операций с Map:

1. put(K key, V value) - добавляет элемент в карту;

2. get(Object key) - ищет значение по его ключу;

3. remove(Object key) - удаляет значение по его ключу;

4. containsKey(Object key) - спрашивает, есть ли в карте заданный ключ;

5. containsValue(Object value) - спрашивает есть ли в карте заданное значение;

6. size() - возвращает размер карты (количество пар "ключ-значение").

Пример 1

  • put(K key, V value) - добавляем элемент в карту. Например:

Если мы запустим этот код на компьютере, то в консоли то получим:

Отлично - все так, как мы и планировали 🙂

Пример 2 

  • get(Object key) - ищем значение по его ключу. Например:

Если мы запустим этот код на компьютере, то в консоли то получим:

Опять же, все, как мы и предполагали.

Пример 3 

  • remove(Object key) - удаляем значение по его ключу. Например:

Итак, мы удалили запись с ключом "Kate". Получаем:

Пример 4

  • containsKey(Object key) - спрашиваем, есть ли в карте заданный ключ. Например:

Получаем:

Пример 5

  • containsValue(Object value) - спрашиваем, есть ли в карте заданное значение. Например:

Получаем:

Пример 6

  • size() - возвращает размер карты (количество пар "ключ-значение"). Например:

Получаем:


Надеемся, что наша статья была Вам полезна.  Можно записаться к нам на курсы по Java на сайте.

FacebooktwittertumblrFacebooktwittertumblr

FacebooktwittertumblrFacebooktwittertumblr
Самоучители--узнать детальнее--