Преглед садржаја
Како користити мапе у Јави
Увод
Мапе су основна структура података која се користи у програмирању за складиштење кључно-вредносних парова. У Јави, мапе су имплементиране путем интерфејса Map<K, V>
, где K
представља тип кључа, а V
тип вредности. Мапе пружају ефикасан начин за брзо проналажење и приступ вредностима на основу њихових кључева, чинећи их неопходним за бројне апликације укључујући кеширање, индексирање и претраживање података.
У овом свеобухватном водичу, истражићемо како да користимо мапе у Јави, од основних операција до напредних техника. Почећемо прегледом интерфејса Map<K, V>
и затим ћемо практично показати како да креирате, попуњавате, приступате и манипулишете мапама.
Основни концепт
Мапа је колекција јединствених кључно-вредносних парова. Кључеви се користе за идентификацију специфичних вредности, а вредности се повезују са тим кључевима. На пример, ако имамо мапу чији су кључеви имена студената, а вредности њихови просеци, можемо брзо пронаћи просек било ког ученика у мапи једноставно навођењем његовог имена као кључа.
Креирање мапе
Постоје различити начини за креирање мапа у Јави. Најчешћи начин је коришћење имплементације HashMap<K, V>
:
java
Map<String, Integer> studentGrades = new HashMap<>();
Овај код ће креирати нову, празну мапу са кључевима типа String
и вредностима типа Integer
. Можемо такође да користимо друге имплементације мапа, као што су TreeMap<K, V>
(која сортира кључеве) или ConcurrentHashMap<K, V>
(која је безбедна за конкурентни приступ).
Попуњавање мапе
Једном када креирамо мапу, морамо је попунити кључно-вредносним паровима. То можемо учинити користећи методу put(K key, V value)
:
java
studentGrades.put("Петар Петровић", 90);
studentGrades.put("Марија Јовановић", 85);
studentGrades.put("Јован Симић", 95);
Овај код ће додати три пара у мапу где су кључеви имена студената, а вредности њихови просеци.
Приступ вредностима мапе
Да бисмо приступили вредностима мапе, можемо користити методу get(K key)
. Она ће вратити вредност повезану са задатим кључем, или null
ако кључ не постоји у мапи:
java
int petarsGrade = studentGrades.get("Петар Петровић");
System.out.println(petarsGrade); //90
Итерација кроз мапу
Да бисмо итерирали кроз мапу и приступили свим њеним кључно-вредносним паровима, можемо користити методу entrySet()
. Она враћа скупа поставка (Set) уноса мапе (ентитета), где је сваки ентитет пар типа Map.Entry<K, V>
:
java
for (Map.Entry<String, Integer> entry : studentGrades.entrySet()) {
String studentName = entry.getKey();
int studentGrade = entry.getValue();
System.out.println(studentName + ": " + studentGrade);
}
Уклањање ставки из мапе
Да бисмо уклонили ставку из мапе, можемо користити методу remove(K key)
. Она ће уклонити пару са задатим кључем из мапе и вратити вредност те старе (уклоњене) паре, или null
ако кључ није постојао у мапи:
java
studentGrades.remove("Марија Јовановић");
Корисне методе мапе
Поред основних операција, интерфејс Map<K, V>
пружа и бројне корисне методе, укључујући:
– size()
: Враћа број парова у мапи
– isEmpty()
: Враћа true
ако је мапа празна, иначе false
– containsKey(K key)
: Враћа true
ако мапа садржи пар са задатим кључем, иначе false
– containsValue(V value)
: Враћа true
ако мапа садржи бар један пар са задатом вредношћу, иначе false
– putAll(Map<? extends K, ? extends V> m)
: Додаје све парове из задате мапе у ову мапу
Закључак
У овом чланку смо темељно истражили употребу мапа у Јави. Покрили смо основне операције, као што су креирање, попуњавање и приступ вредностима, као и напредније технике као што су итерација и уклањање ставки. Такође смо истражили корисне методе доступне путем интерфејса Map<K, V>
.
Мапе су моћна структура података која се може користити за разноврсне сценарије. Њихова ефикасност и лакоћа употребе чине их неопходним за многе апликације засноване на Јави. Усавршавајући наше разумевање мапа, можемо повећати ефикасност и функционалност наших Јава програма.
Честа питања
1. Које су главне разлике између HashMap<K, V>
и TreeMap<K, V>
?
– HashMap
је брз и несортирани, док је TreeMap
сортиран према кључевима.
2. Да ли мапе у Јави чувају дупликате кључева?
– Не, мапе чувају јединствене кључеве, што значи да не могу имати више парова са истим кључем.
3. Како могу сортирати мапу по вредностима?
– Можемо користити класи TreeMap<K, V>
или сортирати листу вредности из добијене колекције ентитета мапе.
4. Да ли мапе у Јави одржавају редослед уношења?
– Не, мапе не одржавају редослед уношења, осим ако не користимо повезану имплементацију мапе, као што је LinkedHashMap<K, V>
.
5. Како могу проверити да ли мапа има било коју вредност?
– Можемо користити методу containsValue(V value)
да проверимо да ли мапа садржи пар са задатом вредношћу.
6. Да ли су мапе у Јави безбедне за конкурентне приступе?
– Мапе нису безбедне за конкурентне приступе по подразумеваном подешавању. Ако желимо конкурентну безбедност, можемо користити имплементацију ConcurrentHashMap<K, V>
.
7. Можемо ли итерирати само кроз кључеве мапе?
– Да, можемо користити методу keySet()
да добијемо скуп кључева мапе и затим итерирати кроз њега.
8. Како могу претворити мапу у листу кључно-вредносних парова?
– Можемо користити метод entrySet().stream().toList()
да претворимо мапу у листу ентитета, а затим мапирати те ентитете на кључно-вредносне парове.