У Java інтерфейс карти присутній у пакеті java.util, який представляє зіставлення між ключем і значенням. Інтерфейс Java Map не є підтипом Інтерфейс колекції . Тому він поводиться дещо інакше, ніж інші типи колекції. Карта містить унікальні ключі.
Гіки, мозковий штурм мав бути навіщо і коли використовувати Карти.
Карти ідеально підходять для зіставлення асоціацій ключ-значення, наприклад словників. Карти використовуються для пошуку за ключами або коли хтось хоче отримати та оновити елементи за ключами. Ось деякі типові сценарії:
- Карта кодів помилок та їх опис.
- Карта поштових індексів і міст.
- Карта керівників і співробітників. Кожен менеджер (ключ) пов’язаний зі списком співробітників (значення), якими він керує.
- Карта класів і учнів. Кожен клас (ключ) пов'язаний зі списком студентів (значення).

Створення об’єктів карти
Оскільки Карта є інтерфейс , об’єкти типу map не можуть бути створені. Нам завжди потрібен клас, який розширює цю карту, щоб створити об’єкт. А також, після введення в Дженерики у Java 1.5 можна обмежити тип об’єкта, який можна зберігати на карті.
перетворення рядка в json у java
Синтаксис: Визначення типово безпечної карти
Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>
Характеристики інтерфейсу карти
- Карта не може містити повторювані ключі, і кожен ключ може зіставлятися щонайбільше з одним значенням. Деякі реалізації допускають нульовий ключ і нульові значення, наприклад HashMap і LinkedHashMap, але деяким не подобається TreeMap .
- Порядок карти залежить від конкретних реалізацій. Наприклад, TreeMap і LinkedHashMap мають передбачувані порядки, а HashMap — ні.
- Існує два інтерфейси для реалізації Map у Java. Це Map і SortedMap і три класи: HashMap, TreeMap і LinkedHashMap.
Методи в інтерфейсі карти Java
| метод | Дія виконана |
|---|---|
| очистити() | Цей метод використовується в Java Map Interface для очищення та видалення всіх елементів або відображень із зазначеної колекції карт. |
| містить ключ (об'єкт) | Цей метод використовується в інтерфейсі карти в Java, щоб перевірити, чи певний ключ відображається в карті чи ні. Він приймає ключовий елемент як параметр і повертає True, якщо цей елемент зіставлено на карті. |
| містить значення (об'єкт) | Цей метод використовується в інтерфейсі карти, щоб перевірити, чи певне значення зіставляється одним або кількома ключами в карті. Він приймає значення як параметр і повертає True, якщо це значення відображається будь-яким із ключів у карті. |
| entrySet() | Цей метод використовується в інтерфейсі карти в Java для створення набору з тих самих елементів, що містяться на карті. По суті, він повертає набір подання карти, або ми можемо створити новий набір і зберігати в ньому елементи карти. |
| дорівнює (об'єкт) | Цей метод використовується в Java Map Interface для перевірки рівності між двома картами. Він перевіряє, чи дорівнюють елементи однієї карти, передані як параметр, елементам цієї карти. |
| отримати (об'єкт) | Цей метод використовується для отримання або отримання значення, зіставленого певним ключем, згаданим у параметрі. Він повертає NULL, якщо карта не містить такого відображення для ключа. |
| hashCode() | Цей метод використовується в інтерфейсі карти для створення хеш-коду для даної карти, що містить ключі та значення. |
| пусто() | Цей метод використовується, щоб перевірити, чи містить карта будь-який запис для пар ключів і значень. Якщо зіставлення не існує, це повертає істину. |
| keySet() | Цей метод використовується в інтерфейсі карти для повернення набору подання ключів, які містяться на цій карті. Набір підтримується картою, тому зміни на карті відображаються в наборі, і навпаки. |
| put(Object, Object) | Цей метод використовується в Java Map Interface, щоб пов’язати вказане значення з указаним ключем у цій карті. |
| putAll(Map) | Цей метод використовується в інтерфейсі карт на Java для копіювання всіх відображень із зазначеної карти на цю карту. |
| видалити (об'єкт) | Цей метод використовується в інтерфейсі карти для видалення зіставлення ключа з цієї карти, якщо він присутній на карті. |
| розмір() | Цей метод використовується для повернення кількості пар ключ/значення, доступних на карті. |
| значення() | Цей метод використовується в Java Map Interface для створення колекції зі значень карти. По суті, він повертає перегляд колекції значень у HashMap. |
| getOrDefault(ключ об'єкта, V defaultValue) | Повертає значення, на яке зіставляється вказаний ключ, або defaultValue, якщо ця карта не містить зіставлення для ключа. |
| merge (ключ K, значення V, функція перевідображення BiFunction) | Якщо вказаний ключ ще не пов’язано зі значенням або пов’язано з null, пов’яжіть його з заданим ненульовим значенням. |
| putIfAbsent(ключ K, значення V) | Якщо вказаний ключ ще не пов’язано зі значенням (або зіставлено з null), він пов’язує його з заданим значенням і повертає null, інакше повертає поточне асоційоване значення. |
приклад:
Java
// Java Program to Demonstrate> // Working of Map interface> > // Importing required classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an empty HashMap> >Map hm> >=>new> HashMap();> > >// Inserting pairs in above Map> >// using put() method> >hm.put(>'a'>,>new> Integer(>100>));> >hm.put(>'b'>,>new> Integer(>200>));> >hm.put(>'c'>,>new> Integer(>300>));> >hm.put(>'d'>,>new> Integer(>400>));> > >// Traversing through Map using for-each loop> >for> (Map.Entry me :> >hm.entrySet()) {> > >// Printing keys> >System.out.print(me.getKey() +>':'>);> >System.out.println(me.getValue());> >}> >}> }> |
>
>Вихід:
a:100 b:200 c:300 d:400>
Класи, які реалізують інтерфейс карти, зображені на медіа-файлах нижче та описані нижче:

1. HashMap
HashMap є частиною колекції Java з Java 1.2. Він забезпечує базову реалізацію інтерфейсу Map Java. Він зберігає дані в парах (ключ, значення). Щоб отримати доступ до значення, необхідно знати його ключ. Цей клас використовує техніку під назвою Java
// Java Program to illustrate the Hashmap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty HashMap> >Map map =>new> HashMap();> > >// Inserting entries in the Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }> |
>
>Вихід
vaibhav 20 vishal 10 sachin 30>
2. LinkedHashMap
LinkedHashMap схожий на HashMap з додатковою функцією підтримки порядку вставлених у нього елементів. HashMap забезпечив перевагу швидкого вставлення, пошуку та видалення, але він ніколи не підтримував відстеження та порядок вставлення, які надає LinkedHashMap, де можна отримати доступ до елементів у їх порядку вставки. Давайте подивимося, як створити об’єкт карти за допомогою цього класу.
приклад
Java
// Java Program to Illustrate the LinkedHashmap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty LinkedHashMap> >Map map =>new> LinkedHashMap();> > >// Inserting pair entries in above Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }> |
>
масив рядків мовою c
>Вихід
vishal 10 sachin 30 vaibhav 20>
3. TreeMap
The TreeMap на Java використовується для реалізації інтерфейсу карти та NavigableMap разом із абстрактним класом. Карта сортується відповідно до природного порядку її ключів або за допомогою компаратора, який надається під час створення карти, залежно від того, який конструктор використовується. Це виявляється ефективним способом сортування та зберігання пар ключ-значення. Порядок зберігання, який підтримується деревовидною картою, має бути узгодженим із рівними, як і будь-яка інша відсортована карта, незалежно від явних компараторів. Давайте подивимося, як створити об’єкт карти за допомогою цього класу.
приклад
Java
// Java Program to Illustrate TreeMap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty TreeMap> >Map map =>new> TreeMap();> > >// Inserting custom elements in the Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map using for each loop> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }> |
>
>Вихід
sachin 30 vaibhav 20 vishal 10>
Виконання операцій за допомогою Інтерфейс карти і Клас HashMap
Оскільки Map є інтерфейсом, його можна використовувати лише з класом, який реалізує цей інтерфейс. Тепер давайте подивимося, як виконати кілька часто використовуваних операцій на карті за допомогою широко використовуваних Клас HashMap . А також, після введення Дженерики у Java 1.5 можна обмежити тип об’єкта, який можна зберігати на карті.
java для перерви
1. Додавання елементів
Щоб додати елемент до карти, ми можемо використати метод put(). Однак порядок вставки не зберігається в хеш-карті. Внутрішньо для кожного елемента генерується окремий хеш, і елементи індексуються на основі цього хешу, щоб зробити його більш ефективним.
приклад
Java
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> >// Default Initialization of a> >// Map> >Map hm1 =>new> HashMap();> > >// Initialization of a Map> >// using Generics> >Map hm2> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>1>,>'Geeks'>);> >hm1.put(>2>,>'For'>);> >hm1.put(>3>,>'Geeks'>);> > >hm2.put(>new> Integer(>1>),>'Geeks'>);> >hm2.put(>new> Integer(>2>),>'For'>);> >hm2.put(>new> Integer(>3>),>'Geeks'>);> > >System.out.println(hm1);> >System.out.println(hm2);> >}> }> |
>
>Вихід
{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}> 2. Змінний елемент
Після додавання елементів, якщо ми хочемо змінити елемент, це можна зробити, знову додавши елемент за допомогою методу put(). Оскільки елементи на карті індексуються за допомогою ключів, значення ключа можна змінити, просто вставивши оновлене значення для ключа, для якого ми хочемо змінити.
приклад
Java
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'Geeks'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> > >System.out.println(>'Initial Map '> + hm1);> > >hm1.put(>new> Integer(>2>),>'For'>);> > >System.out.println(>'Updated Map '> + hm1);> >}> }> |
>
>Вихід
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}> 3. Видалення елементів
Щоб видалити елемент із карти, ми можемо використати метод remove(). Цей метод приймає значення ключа та видаляє відображення для ключа з цієї карти, якщо він присутній у карті.
приклад
Java
заміна рядка javascript
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> > >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'For'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> >hm1.put(>new> Integer(>4>),>'For'>);> > >// Initial Map> >System.out.println(hm1);> > >hm1.remove(>new> Integer(>4>));> > >// Final Map> >System.out.println(hm1);> >}> }> |
>
>Вихід
{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}> 4. Ітерація по карті
Існує кілька способів ітерації по карті. Найвідоміший спосіб — використовувати цикл for-each і отримати ключі. Значення ключа визначається за допомогою методу getValue().
приклад
Java
arraylist відсортований
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'For'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> > >for> (Map.Entry mapElement : hm1.entrySet()) {> >int> key = (>int>)mapElement.getKey();> > >// Finding the value> >String value = (String)mapElement.getValue();> > >System.out.println(key +>' : '> + value);> >}> >}> }> |
>
>Вихід
1 : Geeks 2 : For 3 : Geeks>
5. Підрахуйте появу чисел за допомогою Hashmap
У цьому коді ми використовуємо putIfAbsent( ) разом з Collections.frequency() підрахувати точне входження чисел. У багатьох програмах вам потрібно підрахувати появу певної цифри чи літери. Ви використовуєте наступний підхід для вирішення таких проблем
Java
// Java program to Count the Occurrence> // of numbers using Hashmap> import> java.util.*;> > class> HelloWorld {> >public> static> void> main(String[] args)> >{> >int> a[] = {>1>,>13>,>4>,>1>,>41>,>31>,>31>,>4>,>13>,>2> };> > >// put all elements in arraylist> >ArrayList aa =>new> ArrayList();> >for> (>int> i =>0>; i aa.add(a[i]); } HashMap h = new HashMap(); // counting occurrence of numbers for (int i = 0; i h.putIfAbsent(aa.get(i), Collections.frequency( aa, aa.get(i))); } System.out.println(h); } }> |
>
>Вихід
{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}> Поширені запитання щодо інтерфейсу карти Java
Q1. Що таке інтерфейс карти в Java?
відповідь:
Карта містить пари ключ-значення, де ми отримуємо доступ до елементів на карті за допомогою значень ключів.
Q2. Які існують типи інтерфейсів карти в Java?
відповідь:
Існує 3 реалізації інтерфейсу карти: HashMap, LinkedHashMap і TreeMap.