treemap java tutorial with java treemap examples
Ten samouczek Java TreeMap omawia klasę TreeMap, iterację, przykłady TreeMap, implementację, Java Hashmap vs Treemap, metody TreeMap API itp .:
Struktura danych TreeMap to kolekcja przechowująca pary klucz-wartość w naturalnie posortowanej kolejności. TreeMap jest częścią Java Collections Framework i jest implementacją mapy.
=> Sprawdź WSZYSTKIE samouczki Java tutaj.
Czego się nauczysz:
Java TreeMap
Niektóre z głównych cech TreeMap w Javie są następujące:
- Klasa TreeMap, która implementuje mapę drzewa w Javie, jest częścią pakietu java.util. Implementuje interfejs Map.
- Klasa TreeMap stanowi rozszerzenie klasy AbstractMap, a także implementuje (pośrednio) interfejs NavigableMap i SortedMap.
- TreeMap nie jest zsynchronizowana.
- Domyślnie elementy TreeMap są w porządku rosnącym.
- TreeMap nie zezwala na zduplikowane elementy.
- TreeMap zezwala na wartości null, ale nie na klucze o wartości null.
Poniższy diagram przedstawia hierarchię klas dla klasy TreeMap.

Jak już wspomniano, klasa TreeMap implementuje interfejs NavigableMap, który z kolei rozszerza klasę SortedMap. SortedMap dalej dziedziczy interfejs mapy.
Deklaracja klasy TreeMap
Ogólna deklaracja klasy TreeMap jest podana poniżej:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializablegdzie K => typ kluczy obsługiwanych przez TreeMap
V => typ mapowanych wartości
Przykład TreeMap
Poniższy program przedstawia prosty przykład struktury danych 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('}'); } } Wynik:
Zawartość TreeMap:
{100 = Pune 101 = Hajdarabad 102 = Jaipur 103 = Bangaluru}

W tym programie zdefiniowaliśmy prosty obiekt TreeMap o nazwie cities_map, a następnie za pomocą metody put zainicjowaliśmy go na pary klucz-wartość.
Następnie używamy metody entrySet () klasy TreeMap i iterujemy po tym zestawie, używając pętli forEach do wypisywania par klucz-wartość. Do drukowania par klucz-wartość używamy odpowiednio metod getKey () i getValue ().
aplikacje do pobierania filmów z youtube
TreeMap API Methods & Constructors
W tej sekcji omówimy różne konstruktory i metody udostępniane przez klasę TreeMap.
Konstruktorzy
| Prototyp konstruktora | Opis | |
|---|---|---|
| descendingMap | NavigableMap descendingMap () | Zwraca podane pary klucz-wartość w odwrotnej kolejności. |
| TreeMap () | Domyślny konstruktor do tworzenia pustej TreeMap z naturalnym porządkiem. | |
| TreeMap (komparator) | Tworzy pustą TreeMap, która jest sortowana na podstawie określonego komparatora. | |
| TreeMap (Mapa m) | Konstruuje TreeMap i inicjalizuje ją elementami określonej mapy, m. Porządkowanie jest naturalne. | |
| TreeMap (SortedMap m) | Konstruuje TreeMap i inicjalizuje go wpisami SortedMap. Kolejność przebiega tak samo, jak sortowana mapa. |
Metody
| metoda | Prototyp metody | Opis |
|---|---|---|
| sufitEntry | Mapa Sufit wejściowy Wejście (klawisz K) | Zwraca najmniejszą parę klucz-wartość, taką że klucz jest większy lub równy podanemu kluczowi; null, jeśli nie ma klucza |
| sufitKey | Klawisz K sufit (klawisz K) | Zwraca klucz, który jest najmniejszy i większy niż podany klucz; zwraca null, jeśli nie ma klucza. |
| jasny | void clear () | Usuwa wszystkie pary klucz-wartość z mapy drzewa. |
| klon | Klon obiektu () | Tworzy płytką kopię instancji TreeMap. |
| komparator | Komparator porównawczy () | Zwraca komparator używany do rozmieszczania kluczy. null, jeśli zamawianie jest naturalne |
| descendingKeySet | NavigableSet descendingKeySet () | Zwraca widok NavigableSet kluczy TreeMap w odwrotnej kolejności. |
| firstEntry | Map.Entry firstEntry () | Zwraca najmniejszą parę klucz-wartość. |
| floorEntry | Mapa Wejście na piętro Wejście (klawisz K) | Zwraca największy klucz, który jest mniejszy lub równy podanemu kluczowi; null, jeśli nie ma takiego klucza |
| dla każdego | void forEach (akcja BiConsumer) | Dana akcja jest wykonywana dla każdego wpisu w TreeMap. |
| headMap | SortedMap headMap (K toKey) | Służy do zwracania pary klucz-wartość takiej, że zwracany klucz jest ściśle mniejszy niż toKey |
| headMap | NavigableMap headMap (K toKey, włącznie z wartością logiczną) | Zwraca pary klucz-wartość tych kluczy, które są mniejsze niż toKey lub równe, jeśli włącznie. |
| wyższyEntry | Mapa Wejdź wyżej Wejście (klawisz K) | Zwraca najmniejszy klucz lub null. Zwrócony klucz jest ściśle większy niż podany klucz. |
| wyższaKey | K wyższy Klawisz (klawisz K) | Zwraca klucz, jeśli mapowanie jest obecne dla danego klucza w mapie drzewa. |
| zestaw kluczy | Ustaw keySet () | Zwraca kolekcję zestawów kluczy w TreeMap. |
| Ostatni wpis | Map.Entry lastEntry () | Zwraca parę klucz-wartość w taki sposób, że klucz jest największym kluczem. Zwraca null, jeśli klucz nie istnieje. |
| lowerEntry | Map.Entry lowerEntry (klawisz K) | Zwraca parę klucz-wartość w taki sposób, że klucz jest największy i ściśle mniejszy niż podany klucz. Zwraca null, jeśli klucz nie istnieje. |
| lowerKey | K lowerKey (klawisz K) | Zwraca największy klucz lub null. Zwrócony klucz jest mniejszy niż podany klucz. |
| navigableKeySet | NavigableSet navigableKeySet () | Zwraca „NavigableSet” kluczy w TreeMap. |
| pollFirstEntry | Map.Entry pollFirstEntry () | Usuwa, a następnie zwraca najmniejszą parę klucz-wartość. |
| pollLastEntry | Map.Entry pollLastEntry () | Usuwa i zwraca największą parę klucz-wartość. |
| położyć | V put (klawisz K, wartość V) | Dodaje podany klucz i wartość do TreeMap. |
| połóż wszystko | void putAll (Mapa mapy) | Wszystkie pary klucz-wartość z danej mapy są kopiowane do TreeMap. |
| zastąpić | Zastąp V (klawisz K, wartość V) | Zastępuje lub zmienia wartość danego klucza na podaną wartość. |
| zastąpić | boolean replace (klawisz K, V oldValue, V newValue) | Zastępuje oldValue podanego klucza nową wartością. |
| Zamień wszystko | void replaceAll (funkcja BiFunction) | Wywołuje daną funkcję i zastępuje wszystkie wpisy wynikiem funkcji. |
| subMap | Mapa podrzędna mapy nawigacyjnej (K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Zwraca pary klucz-wartość kluczy od „fromKey” do „toKey”. |
| SortedMap | SortedMap SubMap (K fromKey, K toKey) | Zwraca pary klucz-wartość dla zakresu odKey (włącznie) do toKey (wyłącznie). |
| tailMap | SortedMap tailMap (K fromKey) | Zwraca pary klucz-wartość takie, że klucze są większe lub równe fromKey. |
| tailMap | NavigableMap tailMap (K fromKey, włącznie z wartością logiczną) | Zwraca pary klucz-wartość dla kluczy równych fromKey (włącznie = true) lub większych niż fromKey. |
| zawieraKlucz | boolean containsKey (klucz obiektu) | Sprawdza, czy istnieje mapowanie dla danego klucza w mapie drzewa. Zwraca wartość true, jeśli tak. |
| zawieraValue | boolean zawieraValue (wartość obiektu) | Sprawdza, czy istnieje klucz zmapowany z podaną wartością. Zwraca tak, jeśli prawda. |
| firstKey | K firstKey () | Zwraca najniższy klucz lub pierwszy klucz w posortowanej mapie |
| otrzymać | V get (klucz obiektu) | Pobiera wartość zamapowaną na podany klucz |
| lastKey | K lastKey () | Zwraca ostatni klucz lub najwyższy klucz w posortowanej mapie. |
| usunąć | V usuń (klucz obiektu) | Usuwa parę klucz-wartość dla danego klucza w TreeMap |
| entrySet | Zestaw | Zwraca zestaw dla danej TreeMap. |
| rozmiar | rozmiar int () | Zwraca rozmiar lub całkowitą liczbę par klucz-wartość w TreeMap. |
| wartości | Wartości kolekcji () | Zwraca kolekcję wartości dla TreeMap. |
Iteracja przez TreeMap
TreeMap składa się z par klucz-wartość. Klasa TreeMap udostępnia metodę „entrySet”, która zwraca na mapie pary klucz-wartość. Możemy iterować te wpisy za pomocą pętli forEach i wyświetlać klucze i wartości, używając odpowiednio metod getKey () i getValue ().
Jest to pokazane w poniższym programie 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() + ')'); } } Wynik:
Zawartość TreeMap:
(B => niebieski)
(G => zielony)
(M => magenta)
(R => czerwony)

Implementacja TreeMap w Javie
Poniższy program w języku Java demonstruje główną metodę klasy TreeMap omówioną powyżej.
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); } } Wynik:
Oryginalna mapa: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Najbliższe niższe wejście niż 4: 3 = 9
Najbliższe wyższe wejście niż 4: 5 = 25
Najbliższy niższy klawisz niż 4: 3
Najbliższe wejście na piętro niż 6: 6 = 36
Najbliższe wejście do sufitu niż 6: 6 = 36
TreeMap First Entry: 1 = 1
TreeMap Ostatni wpis: 10 = 100
Odwrócona mapa drzewa: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
TreeMap First Entry: 1 = 1
TreeMap Ostatni wpis: 10 = 100
Podmapa od 2 do 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
Mapa głowy: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
TailMap: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}

Sortuj mapę drzewa według wartości
Domyślnie TreeMap jest sortowane na podstawie kluczy zgodnie z naturalną kolejnością. Ale jeśli chcemy posortować TreeMap według wartości, musimy skorzystać z komparatora, aby zdefiniować sortowanie.
Poniższy program Java sortuje TreeMap według wartości.
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()); } } } Wynik:
Posortowana mapa drzewa oparta na wartościach:
B: niebieski
C: cyjan
G: zielony
M: magenta
R: czerwony

css pytania do wywiadu i odpowiedzi dla doświadczonych
Java Hashmap vs Treemap
Zobaczmy niektóre z głównych różnic między HashMap a TreeMap.
Poniższa tabela pokazuje te różnice.
| HashMap | TreeMap |
|---|---|
| HashMap jest znacznie szybszy niż TreeMap. | TreeMap działa wolniej |
| Implementuje interfejs Map. | Implementuje interfejs NavigableMap. |
| Wykorzystuje technikę implementacji skrótu | Do implementacji użyj czerwono-czarnego drzewa |
| Nie zachowuje kolejności elementów zawierających elementy | Klucze na mapie drzewa są już uporządkowane zgodnie z naturalnym porządkiem |
| Zezwala na jeden klucz pusty i wiele wartości null | Zezwala tylko na wartości null, ale klucze nie mogą być puste |
| Wykonuje podstawowe operacje, umieszcza i pobiera w stałym czasie. | Poświęć log (n) czas na wykonanie operacji put i get |
| HashMap ma ograniczoną funkcjonalność. | Klasa TreeMap zapewnia wiele dodatkowych funkcji, które pomagają nam manipulować strukturą danych. |
| Używa metody equals () do porównania. | Używa metody compareTo () do porównania. |
Często Zadawane Pytania
Pytanie 1) Co to jest TreeMap w Javie?
Odpowiedź: TreeMap w Javie to zbiór par klucz-wartość, które są już posortowane. Do implementacji wykorzystuje czerwono-czarne drzewo. Java TreeMap implementuje interfejs NavigableMap oprócz interfejsu Map, a także rozszerza klasę AbstractMap.
Pytanie nr 2) Dlaczego używamy TreeMap w Javie?
Odpowiedź: TreeMap jest używany w Javie do implementacji interfejsów Map i NavigableMap oraz klasy AbstractMap. Ponieważ klucze TreeMap są sortowane zgodnie z naturalną kolejnością, możemy użyć tej struktury danych do przechowywania struktury katalogów, hierarchii drzew itp.
Pytanie nr 3) Co jest lepsze - HashMap czy TreeMap?
Odpowiedź: HashMap jest lepszy niż TreeMap. HashMap zawsze potrzebuje stałego czasu na wykonanie podstawowych operacji, podczas gdy TreeMap potrzebuje czasu log (n) na wykonanie tych operacji. W przypadku większych obiektów danych HashMap działa szybciej w porównaniu z TreeMap.
Pytanie 4) Czy TreeMap jest posortowane?
Odpowiedź: Tak, kluczowe wpisy w TreeMap są sortowane według naturalnego porządku. Klasa TreeMap umożliwia także użycie niestandardowego komparatora do sortowania TreeMap na podstawie wartości.
Pytanie nr 5) Czy TreeMap jest bezpieczne dla wątków?
Odpowiedź: Nie, TreeMap nie jest kolekcją bezpieczną dla wątków.
Wniosek
W tym samouczku szczegółowo omówiliśmy TreeMap w Javie. TreeMap to zbiór par klucz-wartość, który implementuje interfejs mapy. Implementuje również interfejs NavigableMap. Elementy TreeMap są unikalne i żadne duplikaty nie są dozwolone.
Widzieliśmy konstruktory i metody TreeMap. Zaimplementowaliśmy również program TreeMap i zademonstrowaliśmy główne metody klasy TreeMap. Następnie omówiliśmy różnice między HashMap i TreeMap.
=> Odwiedź tutaj, aby zobaczyć serię szkoleń Java dla wszystkich.
rekomendowane lektury
- TreeSet w Javie: samouczek z przykładami programowania
- Drzewo wyszukiwania binarnego w Javie - przykłady implementacji i kodu
- Samouczek JAVA dla początkujących: ponad 100 praktycznych samouczków wideo Java
- Java String zawiera () Samouczek dotyczący metody z przykładami
- Co to jest wektor Java | Samouczek klasy wektorowej Java z przykładami
- Postrzępiona tablica w Javie - samouczek z przykładami
- Samouczek klasy skanera Java z przykładami
- Samouczek dotyczący ciągów Java | Metody ciągów Java z przykładami