treemap java tutorial with java treemap examples
Този урок на Java TreeMap обсъжда клас TreeMap, итерация, примери на TreeMap, внедряване, Java Hashmap срещу Treemap, TreeMap API методи и т.н.:
Структурата от данни на TreeMap е колекция, която съхранява двойки ключ-стойност в естествено подреден ред. TreeMap е част от рамката на Java Collections и е реализация на карта.
=> Проверете ВСИЧКИ уроци за Java тук.
Какво ще научите:
Java TreeMap
Някои от основните характеристики на TreeMap в Java са както следва:
- Класът TreeMap, който реализира treemap в Java, е част от пакета java.util. Той реализира интерфейса Map.
- Класът TreeMap разширява класа AbstractMap и също така изпълнява NavigableMap и SortedMap (косвено) интерфейс.
- TreeMap не е синхронизиран.
- По подразбиране елементите TreeMap по подразбиране са във възходящ ред.
- TreeMap не позволява дублиращи се елементи.
- TreeMap позволява нулеви стойности, но не и нулеви ключове.
Диаграмата по-долу показва йерархията на класа за класа TreeMap.
Както вече споменахме, класът TreeMap реализира интерфейс NavigableMap, който от своя страна разширява класа SortedMap. SortedMap допълнително наследява интерфейса на картата.
Декларация за клас TreeMap
Общата декларация за класа TreeMap е дадена по-долу:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
където K => тип ключове, поддържани от TreeMap
V => тип на картографираните стойности
Пример за TreeMap
Програмата по-долу показва прост пример за структура от данни на TreeMap.
import java.util.*; class Main{ public static void main(String args()){ //declare a TreeMap and initialize it TreeMap cities_map=new TreeMap (); cities_map.put(100,'Pune'); cities_map.put(102,'Jaipur'); cities_map.put(101,'Hyderabad'); cities_map.put(103,'Bangaluru'); //print the TreeMap contents using forEach System.out.println('Contents of TreeMap:'); System.out.print('{'); for(Map.Entry entries:cities_map.entrySet()){ System.out.print(entries.getKey()+' = '+entries.getValue() + ' '); } System.out.println('}'); } }
Изход:
Съдържание на TreeMap:
{100 = Пуна 101 = Хайдерабад 102 = Джайпур 103 = Бангалур}
В тази програма дефинирахме прост обект TreeMap, наречен градове_мапа, и след това, използвайки метода put, го инициализирахме към двойки ключ-стойност.
След това използваме метода entrySet () на класа TreeMap и итерираме над този набор, използвайки цикъл forEach, за да отпечатаме двойките ключ-стойност. За отпечатване на двойки ключ-стойност използваме съответно методите getKey () и getValue ().
въпроси за интервю за оракул и отговори за опитни
TreeMap API методи и конструктори
В този раздел ще обсъдим различните конструктори и методи, предоставени от класа TreeMap.
Конструктори
Прототип на конструктора | Описание | |
---|---|---|
низходящаКарта | NavigableMap descendingMap () | Връща дадени двойки ключ-стойност в обратен ред. |
TreeMap () | Конструктор по подразбиране за създаване на празна TreeMap с естествено подреждане. | |
TreeMap (компаратор за сравнение) | Конструира празна TreeMap, която е сортирана въз основа на посочения сравнител. | |
TreeMap (карта m) | Изгражда TreeMap и го инициализира с елементите на посочената карта, m. Поръчката е естествена. | |
TreeMap (SortedMap m) | Изгражда TreeMap и го инициализира със сортирани записи. Поръчката е същата като sortedMap. |
Методи
Метод | Прототип на метода | Описание |
---|---|---|
таван Вход | Карта. Входен таван Вход (клавиш K) | Връща най-малко двойката ключ-стойност, така че ключът е по-голям или равен на посочения ключ; null, ако няма ключ |
таванКлюч | K таван Ключ (клавиш K) | Връща ключа, който е най-малък и по-голям от дадения ключ; връща null, ако няма ключ. |
ясно | празно ясно () | Изтрива всички двойки ключ-стойност от Treemap. |
клон | Клон на обект () | Прави плитко копие на TreeMap екземпляр. |
компаратор | Сравнителен сравнител () | Връща сравнител, използван за подреждане на клавишите. null, ако поръчката е естествена |
низходящKeySet | NavigableSet низходящKeySet () | Връща NavigableSet изглед на клавишите TreeMap в обратен ред. |
firstEntry | Map.Entry firstEntry () | Връща двойката най-малко ключ-стойност. |
етаж Вход | Map.Entry floorEntry (клавиш K) | Връща най-големия ключ, който е по-малък или равен на даден ключ; нула, ако няма такъв ключ |
за всеки | void forEach (действие на BiConsumer) | Даденото действие се извършва за всеки запис в TreeMap. |
headMap | SortedMap headMap (K toKey) | Използва се за връщане на двойка ключ-стойност, така че върнатият ключ е строго по-малък от toKey |
headMap | NavigableMap headMap (K toKey, булево включително) | Връща двойки ключ-стойност на тези ключове, които са по-малки от toKey или равни, ако са включени. |
по-висок Вход | Map.Entry higherEntry (клавиш K) | Връща най-малкия ключ или null. Върнатият ключ е строго по-голям от дадения ключ. |
по-високКлюч | K по-висок Клавиш (клавиш K) | Връща ключа, ако е налице картографирането за дадения ключ в Treemap. |
keySet | Set keySet () | Връща зададената колекция от ключове в TreeMap. |
lastEntry | Map.Entry lastEntry () | Връща двойката ключ-стойност така, че ключът е най-големият ключ. Връща null, ако ключът не съществува. |
lowerEntry | Map.Entry lowerEntry (клавиш K) | Връща двойката ключ-стойност така, че ключът е най-голям и строго по-малък от дадения ключ. Връща null, ако ключът не съществува. |
доленКлюч | K долна клавиша (клавиш K) | Връща най-големия ключ или null. Върнатият ключ е строго по-малък от дадения ключ. |
navigableKeySet | NavigableSet navigableKeySet () | Връща ‘NavigableSet’ на клавишите в TreeMap. |
pollFirstEntry | Map.Entry анкетаFirstEntry () | Премахва и след това връща двойката ключ-стойност на най-малкия ключ. |
pollLastEntry | Map.Entry анкетаLastEntry () | Премахва и връща двойката ключ-стойност на най-големия ключ. |
слагам | V put (ключ K, стойност V) | Добавя даден ключ и стойност към TreeMap. |
putAll | void putAll (Карта на картата) | Всички двойки ключ-стойност от дадената карта се копират в TreeMap. |
замени | V заместване (ключ K, стойност V) | Заменя или променя стойността на дадения ключ с дадената стойност. |
замени | булева замяна (ключ K, V oldValue, V newValue) | Заменя oldValue на дадения ключ с newValue. |
replaceAll | void replaceAll (функция BiFunction) | Извиква дадената функция и замества всички записи с резултата от функцията. |
подкарта | Подкарта NavigableMap (K отKey, булева отInclusive, K toKey, булева доInclusive) | Връща двойките ключ-стойност ключове от ‘fromKey’ към ‘toKey’. |
SortedMap | Подкарта на SortedMap (K отKey, K toKey) | Връща двойки ключ-стойност за диапазона отKey (включително) до toKey (изключителен). |
tailMap | SortedMap tailMap (K отKey) | Връща двойки ключ-стойност, така че ключовете са по-големи или равни на fromKey. |
tailMap | NavigableMap tailMap (K отKey, булево включително) | Връща двойки ключ-стойност за ключовете, равни на fromKey (включително = true) или по-големи от fromKey. |
съдържаКлюч | boolean containsKey (Object key) | Проверява дали има съпоставяне за дадения ключ в Treemap. Връща вярно, ако да. |
съдържа стойност | boolean containsValue (стойност на обекта) | Проверява дали има ключ, картографиран с дадената стойност. Връща да, ако е вярно. |
firstKey | K firstKey () | Връща най-ниския ключ или първия ключ в Сортираната карта |
вземете | V get (Object key) | Извлича стойността, съпоставена с дадения ключ |
lastKey | K lastKey () | Връща последния ключ или най-високия ключ в сортираната карта. |
Премахване | V премахване (Object key) | Изтрива двойката ключ-стойност за дадения ключ в TreeMap |
entrySet | Комплект | Връща набора за дадената TreeMap. |
размер | размер int () | Връща размера или общия брой двойки ключ-стойност в TreeMap. |
стойности | Стойности на колекцията () | Връща колекцията от стойности за TreeMap. |
Итерация през TreeMap
TreeMap се състои от двойки ключ-стойност. Класът TreeMap предоставя метод ‘entrySet’, който връща двойки ключ-стойност в картата. Можем да итерираме през тези записи, като използваме цикъла forEach и показваме ключове и стойности, като използваме съответно методите getKey () и getValue ().
Това е показано в долната програма Java:
import java.util.Map; import java.util.TreeMap; class Main { public static void main(String() arg){ //declare and initialize TreeMap Map colorsTree = new TreeMap(); colorsTree.put('R', 'Red'); colorsTree.put('G', 'Green'); colorsTree.put('B', 'Blue'); colorsTree.put('M', 'Magenta'); System.out.println('The contents of TreeMap:'); // retrieve set of map entries using entrySet method for (Map.Entry Map_entry : colorsTree.entrySet()) //print key-value pairs using getKey() and getValue() System.out.println( '(' + Map_entry.getKey() + '=>' + Map_entry.getValue() + ')'); } }
Изход:
Съдържанието на TreeMap:
(B => Синьо)
(G => Зелено)
(M => пурпурно)
(R => червено)
Внедряване на TreeMap в Java
Следващата програма на Java демонстрира основния метод на класа TreeMap, обсъден по-горе.
import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class Main { public static void main(String() args) { //declare a TreeMap Object and initialize it with values TreeMap map = new TreeMap<>(); for(int i=1;i<=10;i++) { map.put(i, (i*i)+''); } System.out.println('Original Map:' + map); //lowerEntry, higherEntry Entry entry = map.lowerEntry(4); System.out.println('Closest Lower Entry than 4:'+entry); entry = map.higherEntry(4); System.out.println('Closest Higher Entry than 4:'+entry); System.out.println('Closest Lower key than 4 :'+map.lowerKey(4)); entry = map.floorEntry(6); System.out.println('Closest floor entry than 6: '+entry); entry = map.ceilingEntry(6); System.out.println('Closest ceiling Entry than 6 :'+entry); entry = map.firstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.lastEntry(); System.out.println('TreeMap Last Entry:'+entry); Map reversedMap = map.descendingMap(); System.out.println('Reversed TreeMap: '+reversedMap); //pollFirstEntry, pollLastEntry entry = map.pollFirstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.pollLastEntry(); System.out.println('TreeMap Last Entry:'+entry); //subMap Map subMap = map.subMap(2, true, 6, true); System.out.println('Submap from 2 to 6: '+subMap); //headMap subMap = map.headMap(5, true); System.out.println('HeadMap: '+subMap); //tailMap subMap = map.tailMap(5, true); System.out.println('TailMap: '+subMap); } }
Изход:
Оригинална карта: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Най-близкото долно влизане от 4: 3 = 9
Най-близкото по-високо влизане от 4: 5 = 25
Най-близкият долен ключ от 4: 3
Най-близък вход от 6: 6 = 36
Най-близък таван Вход от 6: 6 = 36
TreeMap Първо влизане: 1 = 1
TreeMap Последно влизане: 10 = 100
Обърната карта на дърво: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
TreeMap Първо влизане: 1 = 1
TreeMap Последно влизане: 10 = 100
Подкарта от 2 до 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
HeadMap: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
Карта на опашката: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
Сортирай TreeMap по стойност
По подразбиране TreeMap се сортира въз основа на ключовете според естественото подреждане. Но ако искаме да сортираме TreeMap според стойностите, тогава трябва да използваме компаратора, за да дефинираме сортирането.
Долната програма Java сортира TreeMap по стойност.
import java.util.*; class Main { //Method for sorting the TreeMap based on values public static > Map sortTreeMap(final Map map) { //define a comaprator to sort TreeMap on values Comparator valueComparator = new Comparator() { public int compare(K k1, K k2) { int compare = map.get(k1).compareTo(map.get(k2)); if (compare == 0) return 1; else return compare; } }; //use the comparator to sort the TreeMap and return sortedTreeMap Map sortedTreeMap = new TreeMap(valueComparator); sortedTreeMap.putAll(map); return sortedTreeMap; } public static void main(String args()) { //define and initialize the TreeMap TreeMap treemap = new TreeMap(); treemap.put('R', 'Red'); treemap.put('G', 'Green'); treemap.put('B', 'Blue'); treemap.put('C', 'Cyan'); treemap.put('M', 'Magenta'); // call method sortTreeMap to sort the TreeMap Map sortedTreeMap = sortTreeMap(treemap); // Retrieve set of the entries on the sorted map Set set = sortedTreeMap.entrySet(); System.out.println('The sorted TreeMap based on Values:'); // Now define iterator on this set Iterator i = set.iterator(); // Print TreeMap elements while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ': '); System.out.println(me.getValue()); } } }
Изход:
html5 въпроси за интервю и отговори за опитни
Сортираната TreeMap въз основа на Стойности:
Б: Синьо
C: Циан
G: Зелено
М: Пурпурен
R: Червено
Java Hashmap срещу Treemap
Нека да видим някои от основните разлики между HashMap и TreeMap.
Таблицата по-долу показва тези разлики.
HashMap | TreeMap |
---|---|
HashMap е много по-бърз от TreeMap. | TreeMap е по-бавен |
Внедрява интерфейса Map. | Прилага интерфейс NavigableMap. |
Използва техника за изпълнение на хеширане | Използвайте червено-черно дърво за изпълнение |
Не поддържа никакъв ред на съдържащи елементи | Ключовете в дървесната карта вече са подредени според естествената поръчка |
Позволява един нулев ключ и много нулеви стойности | Позволява само нулеви стойности, но ключовете не могат да бъдат нулеви |
Извършва основни операции, поставя и влиза в постоянно време. | Отделете log (n) време за извършване на операции за пут и get |
HashMap има ограничена функционалност. | Класът TreeMap предоставя много допълнителна функционалност, която ни помага да манипулираме структурата на данните. |
Използва метод equals () за сравнение. | Използва метода compareTo () за сравнение. |
често задавани въпроси
В # 1) Какво представлява TreeMap в Java?
Отговор: TreeMap в Java е колекция от двойки ключ-стойност, които вече са сортирани. Той използва червено-черно дърво за целите на изпълнението. Java TreeMap реализира интерфейса NavigableMap освен интерфейса Map и също така разширява класа AbstractMap.
Q # 2) Защо използваме TreeMap в Java?
Отговор: TreeMap се използва в Java за внедряване на интерфейси Map и NavigableMap и клас AbstractMap. Тъй като ключовете TreeMap са сортирани според естественото подреждане, можем да използваме тази структура от данни за съхраняване на структура на директории, йерархии на дървета и др
Q # 3) Кое е по-добро - HashMap или TreeMap?
Отговор: HashMap е по-добър от TreeMap. HashMap винаги отнема постоянно време за извършване на основни операции, докато TreeMap отнема време (n) за извършване на тези операции. Когато са включени по-големи обекти от данни, HashMap работи по-бързо в сравнение с TreeMap.
Q # 4) TreeMap сортиран ли е?
Отговор: Да, ключовите записи в TreeMap са сортирани според естествения ред. Класът TreeMap също ни позволява да използваме персонализиран компаратор за сортиране на TreeMap въз основа на стойности.
Q # 5) TreeMap безопасно ли е с нишки?
Отговор: Не, TreeMap не е колекция, безопасна за нишки.
Заключение
В този урок обсъдихме подробно TreeMap в Java. TreeMap е колекция от двойки ключ-стойност, която реализира интерфейс на картата. Той също така реализира интерфейс NavigableMap. Елементите на TreeMap са уникални и не се допускат дублирания.
Видяхме конструкторите и методите на TreeMap. Също така внедрихме програмата TreeMap и демонстрирахме основните методи от класа TreeMap. След това обсъдихме разликите между HashMap и TreeMap.
=> Посетете тук, за да видите серията за обучение за Java за всички.
Препоръчително четене
- TreeSet в Java: Урок с примери за програмиране
- Дърво на двоично търсене в Java - Примери за изпълнение и код
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Java String съдържа () Урок за метод с примери
- Какво е Java Vector | Урок за Java Vector Class с примери
- Назъбен масив в Java - урок с примери
- Урок за клас Java Scanner с примери
- Java урок за низове | Низови методи на Java с примери