Знакомство с коллекцией HashMap
В Java есть еще одна интересная коллекция (в широком смысле) — это коллекция Map . Точного перевода ее названия на русский нет: чаще всего ее называют «карта», «словарь» или просто «мапа».
Эта коллекция похожа на коллекцию Set , только хранит не множество элементов, а множество «пар элементов». Каждая пара элементов Map состоит из двух: «ключ» и «значение».
Допустим, вы хотите хранить в программе имена сотрудников компании, их зарплаты или имена ваших коллег и их возраст. Тогда вам бы понадобилась таблица типа такой:
Имя | Возраст |
---|---|
Сергей | 21 |
Николай | 22 |
Иван Петрович | 48 |
Анюта | ? |
В каждой строке тут хранится пара величин. Имя мы будем называть ключом пары , а возраст — значением пары .
Весь набор таких пар и будет называться картой — Map .
Ключом пары может быть что угодно, но ключ не может быть null . Ключи должны быть уникальные: одна карта не может содержать два одинаковых ключа.
2. Класс HashMap
Класс HashMap является самой популярной коллекцией из всех карт ( Map ). С одной стороны, он очень похож на HashSet и имеет все его методы, а с другой — на список ( ArrayList ), если бы индексами у списка могли быть не числа, а слова.
Создать объект типа HashMap можно с помощью команды вида:
Где TКлюч — это тип ключей из пары элементов, TЗначение — тип значений в паре элементов, которые будут храниться в коллекции HashMap .
У класса HashMap есть такие методы:
Метод | Описание |
---|---|
Добавляет в коллекцию пару ( key , value ) | |
Возвращает значение по ключу. | |
Проверяет наличие ключа в коллекции | |
Проверяет наличие значения в коллекции | |
Удаляет элемент из коллекции | |
Очищает коллекцию: удаляет все элементы | |
Возвращает количество пар элементов в коллекции | |
Возвращает множество ключей коллекции | |
Возвращает множество элементов коллекции | |
Возвращает все значения коллекции в виде множества ( Set ) пар ( Map.Entry ). |
Добавление элементов в HashMap
Элементы добавляются в карту сразу парами: для этого используется метод put() . Первым в него передается ключ, вторым — значение.
Если при добавлении элемента выяснится, что элемент с таким ключом уже есть, старое значение ключа заменится на новое.
Такое поведение делает HashMap похожим на массив или список, если бы у них в качестве индексов выступали слова ( String ), а не числа.
В качестве Типа-Ключа и Типа-Значения могут выступать практически любые типы. Есть небольшие дополнительные требования к Типу-Ключу, но о них вы узнаете при детальном изучении коллекций в квесте Java Collections.
Printing HashMap In Java
Now I would like to run through all the values and print them.
It doesn’t seem to work.
What is the problem?
EDIT: Another question: Is this collection zero based? I mean if it has 1 key and value will the size be 0 or 1?
17 Answers 17
keySet() only returns a set of keys from your hash map, you should iterate this key set and the get the value from the hash map using these keys.
In your example, the type of the hash map’s key is TypeKey , but you specified TypeValue in your generic for-loop , so it cannot be compiled. You should change it to:
Update for Java8:
If you don’t require to print key value and just need the hash map value, you can use others’ suggestions.
Another question: Is this collection is zero base? I mean if it has 1 key and value will it size be 0 or 1?
The collection returned from keySet() is a Set . You cannot get the value from a set using an index, so it is not a question of whether it is zero-based or one-based. If your hash map has one key, the keySet() returned will have one entry inside, and its size will be 1.
Print HashMap in Java
This tutorial introduces how to print HashMap elements in Java.
HashMap is an implementation class of Map interface that is used to collect elements into key and value pairs. We can use various methods to print its elements. For example, keySet() method, values() method, entrySet() method, asList() method, etc. Let’s see some examples.
Print HashMap Elements in Java
This is the simplest way to print HashMap in Java. Just pass the reference of HashMap into the println() method, and it will print key-value pairs into the curly braces. See the example below.
Print HashMap Elements Using the keySet() Method in Java
We can use the keySet() method to get a set of keys and then get the value using the get() method in the for loop. The get() method returns the value associated with the passed key. See the example below.
Print HashMap Elements Using forEach() Method in Java
From Java 8, we can use forEach() method to print HashMap elements with the help of getKey() and getValue() method. The getKey() method returns a key from the entrySet and getValue() method returns value associated with the key. See the example below.
Print HashMap Elements Using Arrays.asList() in Java
We can use Arrays.asList() method to print the HashMap elements. The asList() method returns a list representation of the HashMap . See the example below.
Print HashMap Elements Using Collections Class in Java
We can use Collections.singletonList() static method to print the HashMap elements. The singletonList() method returns a list representation of the HashMap . See the example below.
Print HashMap Elements Using the entrySet() Method in Java
The entrySet() method returns a set of entries that can be used in the for loop to print HashMap elements. See the example below.
Print HashMap Elements Using values() and keySet() Method in Java
If we want to print values and keys independently, we can use the values() and keySet() method. The values() method returns a list of all the values, whereas the keySet() method returns a list of all the HashMap keys. See the example below.
Print HashMap Elements Using Biconsumer in Java
The Biconsumer is an interface in Java that can be used to print HashMap elements using the lambda expression. See the example below.
Распечатайте все ключи и значения с карты в Java
В этом посте будут обсуждаться различные методы вывода всех ключей и значений из карты в Java.
Похожие сообщения:
Мы знаем, что keySet() метод возвращает установленное представление ключей, содержащихся в карте, и values() метод возвращает установленное представление значений, содержащихся в карте. Итак, мы можем использовать keySet() распечатать все ключи, присутствующие на карте, и values() для печати всех значений. Есть несколько способов сделать это:
1. Использование Iterator
Map не имеет собственного итератора, поскольку он не расширяет Collection интерфейс. Оба keySet() а также values() возвращает набор, а набор расширяет Collection интерфейс, мы можем получить итератор.
2. Для каждого цикла
Цикл For-each доступен для любого объекта, реализующего Iterable интерфейс. В качестве Set расширяет Iterable интерфейс, мы можем использовать цикл for-each для перебора набора ключей и значений.
3. Java 8 — Iterator.forEachRemaining()
The Iterator интерфейс обеспечивает forEachRemaining() метод, который может печатать каждый элемент, пока все элементы не будут обработаны.
4. Java 8 – Stream.forEach()
Мы можем использовать цикл по набору ключей и значениям, используя Stream.forEach() метод для печати каждого элемента потока.
5. Использование toString()
Для отображения всех ключей или значений, присутствующих на карте, мы можем просто напечатать строковое представление keySet() а также values() , соответственно.
Ниже приведена простая программа на Java, которая печатает все ключи карты, используя keySet() в Java: