Класът Java TreeMap е имплементация, базирана на червено-черно дърво. Той осигурява ефективно средство за съхраняване на двойки ключ-стойност в сортиран ред.
Важните точки относно класа Java TreeMap са:
- Java TreeMap съдържа стойности, базирани на ключа. Той имплементира интерфейса NavigableMap и разширява класа AbstractMap.
- Java TreeMap съдържа само уникални елементи.
- Java TreeMap не може да има нулев ключ, но може да има множество нулеви стойности.
- Java TreeMap не е синхронизиран.
- Java TreeMap поддържа възходящ ред.
Декларация на клас TreeMap
Нека да видим декларацията за класа java.util.TreeMap.
полиморфизъм
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
Параметри на клас TreeMap
Нека да видим параметрите за класа java.util.TreeMap.
Конструктори на клас Java TreeMap
Конструктор | Описание |
---|---|
TreeMap() | Използва се за конструиране на празна дървовидна карта, която ще бъде сортирана по естествения ред на нейния ключ. |
TreeMap (компаратор за сравнение) | Използва се за конструиране на празна дървовидна карта, която ще бъде сортирана с помощта на компаратора за сравнение. |
TreeMap (Карта m) | Използва се за инициализиране на дървовидна карта със записите от м , които ще бъдат сортирани по естествения ред на ключовете. |
TreeMap(SortedMap m) | Използва се за инициализиране на дървовидна карта със записите от SortedMap см , които ще бъдат сортирани в същия ред като см. |
Методи на клас Java TreeMap
Метод | Описание |
---|---|
Map.Entry stropEntry(клавиш K) | Връща двойката ключ-стойност с най-малък ключ, по-голям или равен на указания ключ, или нула, ако няма такъв ключ. |
K таванКлюч (К ключ) | Връща най-малкия ключ, по-голям от зададения ключ или нула, ако няма такъв ключ. |
void clear() | Той премахва всички двойки ключ-стойност от карта. |
Клониране на обект() | Той връща плитко копие на екземпляр на TreeMap. |
Comparator comparator() | Връща компаратора, който подрежда ключа по ред, или нула, ако картата използва естествения ред. |
NavigableSet descendingKeySet() | Той връща изглед на NavigableSet в обратен ред на ключовете, съдържащи се в картата. |
NavigableMap descendingMap() | Връща посочените двойки ключ-стойност в низходящ ред. |
Map.Entry firstEntry() | Връща двойката ключ-стойност с най-малък ключ. |
Map.Entry floorEntry(клавиш K) | Връща най-големия ключ, по-малък или равен на посочения ключ, или нула, ако няма такъв ключ. |
void forEach(действие BiConsumer) | Той изпълнява даденото действие за всеки запис в картата, докато всички записи бъдат обработени или действието хвърли изключение. |
SortedMap headMap(K toKey) | Той връща двойките ключ-стойност, чиито ключове са строго по-малки от toKey. |
NavigableMap headMap (K toKey, булево включително) | Той връща двойките ключ-стойност, чиито ключове са по-малки от (или равни, ако inclusive е true) toKey. |
Map.Entry aboveEntry(клавиш K) | Връща най-малкия ключ, строго по-голям от дадения ключ, или нула, ако няма такъв ключ. |
K по-висок ключ (K ключ) | Използва се за връщане на true, ако тази карта съдържа съпоставяне за посочения ключ. |
Задайте keySet() | Връща колекцията от съществуващи ключове в картата. |
Map.Entry lastEntry() | Връща двойката ключ-стойност с най-голям ключ или нула, ако няма такъв ключ. |
Map.Entry lowerEntry(клавиш K) | Той връща съпоставяне на ключ-стойност, свързано с най-големия ключ, строго по-малък от дадения ключ, или нула, ако няма такъв ключ. |
K долен ключ (клавиш K) | Той връща най-големия ключ, строго по-малък от дадения ключ, или нула, ако няма такъв ключ. |
NavigableSet navigableKeySet() | Той връща изглед на NavigableSet на ключовете, съдържащи се в тази карта. |
Map.Entry pollFirstEntry() | Той премахва и връща съпоставяне на ключ-стойност, свързано с най-малкия ключ в тази карта, или нула, ако картата е празна. |
Map.Entry pollLastEntry() | Той премахва и връща съпоставяне на ключ-стойност, свързано с най-големия ключ в тази карта, или нула, ако картата е празна. |
V put (К ключ, V стойност) | Той вмъква посочената стойност с посочения ключ в картата. |
void putAll (карта карта) | Използва се за копиране на цялата двойка ключ-стойност от една карта в друга карта. |
V замяна (К ключ, V стойност) | Той замества определената стойност за определен ключ. |
булева замяна (клавиш K, V стара стойност, V нова стойност) | Той заменя старата стойност с новата стойност за определен ключ. |
void replaceAll (функция BiFunction) | Той замества стойността на всеки запис с резултата от извикването на дадена функция върху този запис, докато всички записи бъдат обработени или функцията хвърли изключение. |
NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Той връща двойки ключ-стойност, чиито ключове варират от fromKey до toKey. |
SortedMap subMap(K fromKey, K toKey) | Той връща двойки ключ-стойност, чиито ключове варират от fromKey, включително, до toKey, изключителен. |
SortedMap tailMap(K fromKey) | Връща двойки ключ-стойност, чиито ключове са по-големи или равни на fromKey. |
NavigableMap tailMap(K fromKey, boolean inclusive) | Той връща двойки ключ-стойност, чиито ключове са по-големи от (или равни на, ако включително е вярно) fromKey. |
boolean containsKey(обектен ключ) | Връща true, ако картата съдържа съпоставяне за посочения ключ. |
boolean containsValue(Стойност на обект) | Връща true, ако картата съпоставя един или повече ключове към посочената стойност. |
K firstKey() | Използва се за връщане на първия (най-нисък) ключ в момента в тази сортирана карта. |
V get (обектен ключ) | Използва се за връщане на стойността, на която картата преобразува посочения ключ. |
K lastKey() | Използва се за връщане на последния (най-висок) ключ в момента в сортираната карта. |
V премахване (обектен ключ) | Той премахва двойката ключ-стойност на посочения ключ от картата. |
Комплект | Той връща зададен изглед на съпоставянията, съдържащи се в картата. |
int size() | Връща броя двойки ключ-стойност, които съществуват в хеш-таблицата. |
Колекция стойности() | Той връща изглед на колекция от стойностите, съдържащи се в картата. |
Пример за Java TreeMap
import java.util.*; class TreeMap1{ public static void main(String args[]){ TreeMap map=new TreeMap(); map.put(100,'Amit'); map.put(102,'Ravi'); map.put(101,'Vijay'); map.put(103,'Rahul'); for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Output:100 Amit 101 Vijay 102 Ravi 103 Rahul
Пример за Java TreeMap: remove()
import java.util.*; public class TreeMap2 { public static void main(String args[]) { TreeMap map=new TreeMap(); map.put(100,'Amit'); map.put(102,'Ravi'); map.put(101,'Vijay'); map.put(103,'Rahul'); System.out.println('Before invoking remove() method'); for(Map.Entry m:map.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } map.remove(102); System.out.println('After invoking remove() method'); for(Map.Entry m:map.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } } }
Изход:
тестване за съвместимост
Before invoking remove() method 100 Amit 101 Vijay 102 Ravi 103 Rahul After invoking remove() method 100 Amit 101 Vijay 103 Rahul
Пример за Java TreeMap: NavigableMap
import java.util.*; class TreeMap3{ public static void main(String args[]){ NavigableMap map=new TreeMap(); map.put(100,'Amit'); map.put(102,'Ravi'); map.put(101,'Vijay'); map.put(103,'Rahul'); //Maintains descending order System.out.println('descendingMap: '+map.descendingMap()); //Returns key-value pairs whose keys are less than or equal to the specified key. System.out.println('headMap: '+map.headMap(102,true)); //Returns key-value pairs whose keys are greater than or equal to the specified key. System.out.println('tailMap: '+map.tailMap(102,true)); //Returns key-value pairs exists in between the specified key. System.out.println('subMap: '+map.subMap(100, false, 102, true)); } }
descendingMap: {103=Rahul, 102=Ravi, 101=Vijay, 100=Amit} headMap: {100=Amit, 101=Vijay, 102=Ravi} tailMap: {102=Ravi, 103=Rahul} subMap: {101=Vijay, 102=Ravi}
Пример за Java TreeMap: SortedMap
import java.util.*; class TreeMap4{ public static void main(String args[]){ SortedMap map=new TreeMap(); map.put(100,'Amit'); map.put(102,'Ravi'); map.put(101,'Vijay'); map.put(103,'Rahul'); //Returns key-value pairs whose keys are less than the specified key. System.out.println('headMap: '+map.headMap(102)); //Returns key-value pairs whose keys are greater than or equal to the specified key. System.out.println('tailMap: '+map.tailMap(102)); //Returns key-value pairs exists in between the specified key. System.out.println('subMap: '+map.subMap(100, 102)); } }
headMap: {100=Amit, 101=Vijay} tailMap: {102=Ravi, 103=Rahul} subMap: {100=Amit, 101=Vijay}
Каква е разликата между HashMap и TreeMap?
HashMap | TreeMap |
---|---|
1) HashMap може да съдържа един нулев ключ. | TreeMap не може да съдържа нулев ключ. |
2) HashMap не поддържа ред. | TreeMap поддържа възходящ ред. |
Пример за Java TreeMap: Книга
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { public static void main(String[] args) { //Creating map of Books Map map=new TreeMap(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to map map.put(2,b2); map.put(1,b1); map.put(3,b3); //Traversing map for(Map.Entry entry:map.entrySet()){ int key=entry.getKey(); Book b=entry.getValue(); System.out.println(key+' Details:'); System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }
Изход:
1 Details: 101 Let us C Yashwant Kanetkar BPB 8 2 Details: 102 Data Communications & Networking Forouzan Mc Graw Hill 4 3 Details: 103 Operating System Galvin Wiley 6