Картата съдържа стойности на базата на ключ, т.е. двойка ключ и стойност. Всяка двойка ключ и стойност е известна като запис. Картата съдържа уникални ключове.
Картата е полезна, ако трябва да търсите, актуализирате или изтривате елементи въз основа на ключ.
Йерархия на Java Map
Има два интерфейса за внедряване на Map в java: Map и SortedMap и три класа: HashMap, LinkedHashMap и TreeMap. Йерархията на Java Map е дадена по-долу:
Картата не позволява дублиране на ключове, но можете да имате дублирани стойности. HashMap и LinkedHashMap позволяват нулеви ключове и стойности, но TreeMap не позволява нулев ключ или стойност.
Картата не може да бъде обходена, така че трябва да я преобразувате в Set с помощта на keySet() или enterSet() метод.
Клас | Описание |
---|---|
HashMap | HashMap е внедряването на Map, но не поддържа никакъв ред. |
LinkedHashMap | LinkedHashMap е внедряването на Map. Той наследява класа HashMap. Той поддържа реда на вмъкване. |
TreeMap | TreeMap е внедряването на Map и SortedMap. Поддържа възходящ ред. |
Полезни методи на интерфейса на картата
Метод | Описание |
---|---|
V put(обект ключ, стойност на обект) | Използва се за вмъкване на запис в картата. |
void putAll (карта карта) | Използва се за вмъкване на определената карта в картата. |
V putIfAbsent(ключ K, V стойност) | Той вмъква посочената стойност с посочения ключ в картата само ако вече не е посочен. |
V премахване (обектен ключ) | Използва се за изтриване на запис за посочения ключ. |
булево премахване (обектен ключ, стойност на обект) | Той премахва посочените стойности със съответните посочени ключове от картата. |
Задайте keySet() | Той връща изгледа Set, съдържащ всички ключове. |
Комплект | Той връща изгледа Set, съдържащ всички ключове и стойности. |
void clear() | Използва се за нулиране на картата. |
V compute (клавиш K, BiFunction remappingFunction) | Използва се за изчисляване на съпоставяне за посочения ключ и неговата текуща картографирана стойност (или нула, ако няма текущо съпоставяне). |
V computeIfAbsent(ключ K, Function mappingFunction) | Използва се за изчисляване на стойността му с помощта на дадената функция за съпоставяне, ако посоченият ключ все още не е свързан със стойност (или е съпоставен с нула), и го въвежда в тази карта, освен ако не е нула. |
V computeIfPresent(ключ K, BiFunction remappingFunction) | Използва се за изчисляване на ново съпоставяне, дадено на ключа и неговата текуща нанесена стойност, ако стойността за посочения ключ е налична и не е нула. |
boolean containsValue(Стойност на обект) | Този метод връща true, ако някаква стойност, равна на стойността, съществува в картата, в противен случай връща false. |
boolean containsKey(обектен ключ) | Този метод връща true, ако в картата съществува ключ, равен на ключа, в противен случай връща false. |
булево равно (обект o) | Използва се за сравняване на посочения обект с картата. |
void forEach(действие BiConsumer) | Той изпълнява даденото действие за всеки запис в картата, докато всички записи бъдат обработени или действието хвърли изключение. |
V get (обектен ключ) | Този метод връща обекта, който съдържа стойността, свързана с ключа. |
V getOrDefault(обектен ключ, V defaultValue) | Връща стойността, към която е съпоставен посоченият ключ, или defaultValue, ако картата не съдържа съпоставяне за ключа. |
int hashCode() | Връща стойността на хеш кода за картата |
булево isEmpty() | Този метод връща true, ако картата е празна; връща false, ако съдържа поне един ключ. |
V сливане (K ключ, V стойност, BiFunction remappingFunction) | Ако указаният ключ все още не е свързан със стойност или е свързан с null, той го свързва с дадената не-null стойност. |
V замяна (К ключ, V стойност) | Той замества определената стойност за определен ключ. |
булева замяна (клавиш K, V стара стойност, V нова стойност) | Той заменя старата стойност с новата стойност за определен ключ. |
void replaceAll (функция BiFunction) | Той замества стойността на всеки запис с резултата от извикването на дадена функция върху този запис, докато всички записи бъдат обработени или функцията хвърли изключение. |
Колекция стойности() | Той връща изглед на колекция от стойностите, съдържащи се в картата. |
int size() | Този метод връща броя на записите в картата. |
Интерфейс Map.Entry
Entry е подинтерфейсът на Map. Така че ще имаме достъп до него чрез име Map.Entry. Връща колекция-изглед на картата, чиито елементи са от този клас. Той предоставя методи за получаване на ключ и стойност.
Методи на интерфейса Map.Entry
Метод | Описание |
---|---|
K getKey() | Използва се за получаване на ключ. |
V getValue() | Използва се за получаване на стойност. |
int hashCode() | Използва се за получаване на hashCode. |
V setValue(V стойност) | Използва се за замяна на стойността, съответстваща на този запис, с посочената стойност. |
булево равно (обект o) | Използва се за сравняване на посочения обект с други съществуващи обекти. |
статичен | Той връща компаратор, който сравнява обектите в естествен ред на ключ. |
статичен компаратор | Той връща компаратор, който сравнява обектите по ключ, използвайки дадения компаратор. |
статичен | Той връща компаратор, който сравнява обектите в естествен ред по стойност. |
статичен компаратор | Той връща компаратор, който сравнява обектите по стойност, използвайки дадения компаратор. |
Пример за карта на Java: Необщо (стар стил)
//Non-generic import java.util.*; public class MapExample1 { public static void main(String[] args) { Map map=new HashMap(); //Adding elements to map map.put(1,'Amit'); map.put(5,'Rahul'); map.put(2,'Jai'); map.put(6,'Amit'); //Traversing Map Set set=map.entrySet();//Converting to Set so that we can traverse Iterator itr=set.iterator(); while(itr.hasNext()){ //Converting to Map.Entry so that we can get key and value separately Map.Entry entry=(Map.Entry)itr.next(); System.out.println(entry.getKey()+' '+entry.getValue()); } } }
Изход:
10 мл е колко
1 Amit 2 Jai 5 Rahul 6 Amit
Пример за карта на Java: Общ (нов стил)
import java.util.*; class MapExample2{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Elements can traverse in any order for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Изход:
102 Rahul 100 Amit 101 Vijay
Пример за карта на Java: comparingByKey()
import java.util.*; class MapExample3{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByKey()) //Performs an action for each element of this stream .forEach(System.out::println); } }
Изход:
100=Amit 101=Vijay 102=Rahul
Пример за карта на Java: comparingByKey() в низходящ ред
import java.util.*; class MapExample4{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByKey(Comparator.reverseOrder())) //Performs an action for each element of this stream .forEach(System.out::println); } }
Изход:
102=Rahul 101=Vijay 100=Amit
Пример за карта на Java: comparingByValue()
import java.util.*; class MapExample5{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByValue()) //Performs an action for each element of this stream .forEach(System.out::println); } }
Изход:
100=Amit 102=Rahul 101=Vijay
Пример за карта на Java: comparingByValue() в низходящ ред
import java.util.*; class MapExample6{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) //Performs an action for each element of this stream .forEach(System.out::println); } }
Изход:
101=Vijay 102=Rahul 100=Amit