treemap java tutorial with java treemap examples
Цей підручник Java TreeMap обговорює клас TreeMap, ітерацію, приклади TreeMap, реалізацію, хеш-карту Java проти Treemap, методи API TreeMap тощо:
Структура даних TreeMap - це колекція, яка зберігає пари ключ-значення в природному відсортованому порядку. TreeMap є частиною Framework Java Collections і є реалізацією карти.
=> Перевірте ВСІ підручники Java тут.
Що ви дізнаєтесь:
Java TreeMap
Деякі основні характеристики TreeMap в Java такі:
- Клас 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 з іменем cities_map, а потім, використовуючи метод put, ініціалізували його до пар ключ-значення.
Потім ми використовуємо метод entrySet () класу TreeMap і перебираємо цей набір, використовуючи цикл forEach для друку пар ключ-значення. Для друку пар ключ-значення використовуємо методи getKey () та getValue () відповідно.
Запитання та відповіді на співбесіду з центром якості HP
Методи та конструктори API API TreeMap
У цьому розділі ми обговоримо різні конструктори та методи, передбачені класом TreeMap.
Конструктори
Прототип конструктора | Опис | |
---|---|---|
за спаданнямКарта | NavigableMap descendingMap () | Повертає задані пари ключ-значення у зворотному порядку. |
TreeMap () | Конструктор за замовчуванням для створення порожньої TreeMap з природним упорядкуванням. | |
TreeMap (компаратор-компаратор) | Побудовує порожню карту дерева, яка сортується на основі вказаного компаратора. | |
Карта дерев (карта м) | Побудовує TreeMap та ініціалізує його елементами зазначеної карти, m. Замовлення природне. | |
TreeMap (SortedMap m) | Створює TreeMap і ініціалізує його за допомогою записів SortedMap. Впорядкування те саме, що і sortedMap. |
Методи
Метод | Метод-прототип | Опис |
---|---|---|
стеля Вхід | Карта. Вхід на стелю Вхід (клавіша K) | Повертає найменшу пару ключ-значення, таку, що ключ більше або дорівнює вказаному ключу; нуль, якщо немає ключа |
стеляКлюч | K стеліКлюч (клавіша K) | Повертає ключ, який є меншим і більшим, ніж заданий ключ; повертає null, якщо немає ключа. |
ясно | void clear () | Видаляє всі пари ключ-значення з Treemap. |
клон | Клон об'єкта () | Робить неглибоку копію екземпляра TreeMap. |
компаратор | Компаратор компаратор () | Повертає компаратор, який використовується для розташування клавіш. нуль, якщо замовлення є природним |
низхідний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 higherKey (K key) | Повертає ключ, якщо для даного ключа у Деревовій карті є відображення. |
keySet | Встановити keySet () | Повертає набір наборів ключів у TreeMap. |
lastEntry | Map.Entry lastEntry () | Повертає пару ключ-значення так, що ключ є найбільшим ключем. Повертає нуль, якщо ключ не існує. |
lowerEntry | Map.Entry lowerEntry (клавіша K) | Повертає пару ключ-значення так, що ключ найбільший і суворо менший, ніж заданий ключ. Повертає нуль, якщо ключ не існує. |
нижнійКлюч | K нижній клавіша (клавіша K) | Повертає найбільший ключ або нуль. Повернутий ключ суворо менший, ніж даний ключ. |
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 fromKey, логічне відInclusive, K toKey, логічне toInclusive) | Повертає пари ключів-значень ключів від ‘fromKey’ до ‘toKey’. |
SortedMap | Підкарта SortedMap (K fromKey, K toKey) | Повертає пари ключ-значення для діапазону відKey (включно) до toKey (ексклюзивно). |
tailMap | SortedMap tailMap (K відKey) | Повертає пари ключ-значення так, що ключі більше або дорівнює fromKey. |
tailMap | NavigableMap tailMap (K відKey, логічно включно) | Повертає пари ключ-значення для ключів, рівних fromKey (включно = true) або більше, ніж fromKey. |
міститьКлюч | boolean containsKey (Ключ об'єкта) | Перевіряє, чи існує відображення для даного ключа в Treemap. Повертає true, якщо так. |
містить значення | boolean containsValue (значення об'єкта) | Перевіряє, чи є ключ, зіставлений із заданим значенням. Повертає так, якщо істина. |
firstKey | K firstKey () | Повертає найнижчий ключ або перший ключ у відсортованій карті |
отримати | V get (Ключ об'єкта) | Отримує значення, зіставлене з даним ключем |
lastKey | K lastKey () | Повертає останній або найвищий ключ на відсортованій карті. |
видалити | V видалити (клавіша об'єкта) | Видаляє пару ключ-значення для даного ключа в TreeMap |
entrySet | Встановити | Повертає набір для даної Карти дерева. |
розмір | розмір 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}
Заголовок: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
Карта хвоста: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
Сортувати карту дерева за значенням
За замовчуванням 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()); } } }
Вихід:
Відсортована TreeMap на основі значень:
B: Синій
C: блакитний
G: Зелений
М: Пурпуровий
R: Червоний
Хеш-карта Java проти Treemap
Давайте побачимо деякі основні відмінності між HashMap та TreeMap.
У таблиці нижче наведені ці відмінності.
HashMap | TreeMap |
---|---|
HashMap набагато швидший, ніж TreeMap. | TreeMap працює повільніше |
Реалізує інтерфейс Map. | Реалізовано інтерфейс NavigableMap. |
Використовує техніку реалізації хешування | Для реалізації використовуйте червоно-чорне дерево |
Не підтримує жодного порядку містять елементи | Ключі в деревній карті вже впорядковані відповідно до природного замовлення |
Дозволяє один нульовий ключ і багато нульових значень | Дозволяє лише нульові значення, але ключі не можуть бути нульовими |
Виконує основні операції, ставить і отримує за постійний час. | Візьміть log (n) час для виконання операцій put і get |
HashMap має обмежену функціональність. | Клас TreeMap надає багато додаткових функціональних можливостей, які допомагають нам маніпулювати структурою даних. |
Використовує метод equals () для порівняння. | Використовує метод compareTo () для порівняння. |
Часті запитання
Q # 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 відсортовано?
sql проти nosql плюси і мінуси
Відповідь: Так, ключові записи в 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 містить () Підручник із методів із прикладами
- Що таке Java Java | Підручник з Java-класу з прикладами
- Нерівний масив у Java - Підручник із прикладами
- Підручник з класу сканера Java із прикладами
- Підручник із рядків Java | Рядові методи Java на прикладах