treemap java tutorial with java treemap examples
Denna Java TreeMap-handledning diskuterar TreeMap-klass, Iteration, TreeMap-exempel, Implementering, Java Hashmap vs Treemap, TreeMap API-metoder osv .:
En TreeMap-datastruktur är en samling som lagrar nyckel-värdepar i en naturligt sorterad ordning. En TreeMap är en del av Java Collections Framework och är en kartimplementering.
=> Kontrollera ALLA Java-handledning här.
Vad du kommer att lära dig:
Java TreeMap
Några av de viktigaste egenskaperna för TreeMap i Java är följande:
- TreeMap-klassen som implementerar treemap i Java är en del av paketet java.util. Det implementerar Map-gränssnittet.
- TreeMap-klassen utvidgar klassen AbstractMap och implementerar även gränssnittet NavigableMap och SortedMap (indirekt).
- TreeMap synkroniseras inte.
- Som standard är TreeMap-elementen i stigande ordning som standard.
- TreeMap tillåter inte dubbla element.
- TreeMap tillåter nollvärden men inte nollnycklar.
Nedanstående diagram visar klasshierarkin för klassen TreeMap.
Som redan nämnts implementerar TreeMap-klassen ett NavigableMap-gränssnitt som i sin tur utökar klassen SortedMap. SortedMap ärver ytterligare kartgränssnittet.
Deklaration av TreeMap-klass
Den allmänna deklarationen för TreeMap-klassen ges nedan:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
där K => typ av nycklar som underhålls av TreeMap
V => typ av mappade värden
TreeMap Exempel
Programmet nedan visar ett enkelt exempel på en TreeMap-datastruktur.
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('}'); } }
Produktion:
Innehållet i TreeMap:
{100 = Pune 101 = Hyderabad 102 = Jaipur 103 = Bangaluru}
I det här programmet har vi definierat ett enkelt TreeMap-objekt med namnet, towns_map, och sedan använder vi metoden put, vi har initierat det till nyckel-värdepar.
Sedan använder vi metoden entrySet () i TreeMap-klassen och upprepar den här uppsättningen med en forEach-slinga för att skriva ut nyckel-värdeparen. För att skriva ut nyckel-värdepar använder vi getKey () respektive getValue () -metoder.
bästa gratis python ide för Windows
TreeMap API-metoder och konstruktörer
I detta avsnitt kommer vi att diskutera de olika konstruktörerna och metoderna som tillhandahålls av klassen TreeMap.
Konstruktörer
Konstruktör prototyp | Beskrivning | |
---|---|---|
descendingMap | NavigableMap descendingMap () | Returnerar givna nyckel-värdepar i omvänd ordning. |
TreeMap () | Standardkonstruktör för att skapa en tom TreeMap med naturlig ordning. | |
TreeMap (Comparator Comparator) | Konstruerar en tom TreeMap som sorteras baserat på den angivna komparatorn. | |
TreeMap (Karta m) | Konstruerar en TreeMap och initierade den med elementen på den angivna kartan, m. Att beställa är naturligt. | |
TreeMap (SortedMap m) | Konstruerar en TreeMap och initialiseras med SortedMap-poster. Beställning är samma som sortedMap. |
Metoder
Metod | Metodprototyp | Beskrivning |
---|---|---|
taket | Map.Entry ceilingEntry (K-tangent) | Returnerar det minsta nyckel-värdeparet så att nyckeln är större än eller lika med den angivna nyckeln; null om det inte finns någon nyckel |
taknyckel | K-takKey (K-tangent) | Returnerar den nyckel som är minst och större än den angivna nyckeln; returnerar null om ingen nyckel. |
klar | ogiltig rensa () | Raderar alla nyckel-värdepar från Treemap. |
klona | Objektklon () | Gör en grundkopia av TreeMap-instansen. |
jämförare | Jämförelsekomparator () | Returnerar en komparator som används för att ordna nycklarna. null om beställning är naturlig |
descendingKeySet | NavigableSet descendingKeySet () | Returnerar NavigableSet vy av TreeMap-tangenterna i omvänd ordning. |
firstEntry | Map.Entry firstEntry () | Returnerar det minsta nyckel-värdeparet. |
golvinträde | Map.Entry floorEntry (K-tangent) | Returnerar den största nyckeln som är mindre än eller lika med en viss nyckel; null om ingen sådan nyckel |
för varje | ogiltig för varje (BiConsumer-åtgärd) | Den givna åtgärden utförs för varje post i TreeMap. |
headMap | SortedMap headMap (K toKey) | Används för att returnera ett nyckel-värdepar så att den returnerade nyckeln är strikt mindre än toKey |
headMap | NavigableMap headMap (K toKey, inklusive boolesk) | Returnerar nyckel-värdepar av de nycklar som är mindre än toKey eller lika med om inkluderande. |
högre inträde | Map.Entry higherEntry (K-tangent) | Returnerar minst nyckel eller null. Den returnerade nyckeln är strikt större än den angivna nyckeln. |
högreKey | K högreKey (K-tangent) | Returnerar nyckeln om kartläggningen finns för den angivna nyckeln i Treemap. |
keySet | Set keySet () | Returnerar uppsättningen av nycklarna i TreeMap. |
lastEntry | Map.Entry lastEntry () | Returnerar nyckel-värdeparet så att nyckeln är den största nyckeln. Returnerar null om nyckeln inte finns. |
lowerEntry | Map.Entry lowerEntry (K-tangent) | Returnerar nyckel-värdeparet så att nyckeln är störst och strikt mindre än den givna nyckeln. Returnerar null om nyckeln inte finns. |
lägre nyckel | K lägre tangent (K-tangent) | Returnerar den största nyckeln eller null. Den returnerade nyckeln är strikt mindre än den angivna nyckeln. |
navigableKeySet | NavigableSet navigableKeySet () | Returnerar 'NavigableSet' av tangenter i TreeMap. |
pollFirstEntry | Map.Entry pollFirstEntry () | Tar bort och returnerar sedan den minsta nyckelns nyckel-värdepar. |
pollLastEntry | Map.Entry pollLastEntry () | Tar bort och returnerar den största nyckelns nyckel-värdepar. |
sätta | V put (K-tangent, V-värde) | Lägger till nyckel och värde i TreeMap. |
sätt alla | void putAll (Map map) | Alla nyckel-värdepar från den angivna kartan kopieras till TreeMap. |
byta ut | V ersätt (K-tangent, V-värde) | Ersätter eller ändrar värdet på den givna nyckeln med det givna värdet. |
byta ut | boolean ersättare (K-tangent, V oldValue, V newValue) | Ersätter oldValue för den angivna nyckeln med newValue. |
Ersätt alla | void replaceAll (BiFunction-funktion) | Påkallar den givna funktionen och ersätter alla poster med resultatet av funktionen. |
underkarta | NavigableMap subMap (K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Returnerar nyckel-värdet par nycklar från 'fromKey' till 'toKey'. |
SortedMap | SortedMap subMap (K fromKey, K toKey) | Returnerar nyckel-värdepar för intervallet från Key (inklusive) till Key (exklusiv). |
tailMap | SortedMap tailMap (K fromKey) | Returnerar nyckel-värdepar så att tangenterna är större än eller lika med fromKey. |
tailMap | NavigableMap tailMap (K fromKey, inklusive boolean) | Returnerar nyckel-värdepar för nycklarna lika med fromKey (inklusive = true) eller större än fromKey. |
innehållerKey | boolean containsKey (Objektnyckel) | Kontrollerar om det finns en mappning för den angivna nyckeln i Treemap. Returnerar sant om ja. |
containsValue | boolean containsValue (Objektvärde) | Kontrollerar om det finns en nyckel mappad med det angivna värdet. Returnerar ja om det är sant. |
firstKey | K firstKey () | Returnerar den lägsta eller första knappen i den sorterade kartan |
skaffa sig | V get (Objektnyckel) | Hämtar värdet som är mappat till den angivna nyckeln |
lastKey | K lastKey () | Returnerar sista eller högsta tangenten i den sorterade kartan. |
ta bort | V ta bort (Objektnyckel) | Tar bort nyckel-värdeparet för den angivna nyckeln i TreeMap |
entrySet | Uppsättning | Returnerar uppsättningen för angiven TreeMap. |
storlek | int storlek () | Returnerar storlek eller det totala antalet nyckel-värdepar i TreeMap. |
värden | Samlingsvärden () | Returnerar insamling av värdena för TreeMap. |
Iterera genom TreeMap
TreeMap består av nyckel-värdepar. TreeMap-klassen ger en metod 'entrySet' som returnerar nyckel-värdepar i kartan. Vi kan itera igenom dessa poster med hjälp av forEach loop- och displaytangenter och värden med hjälp av getKey () respektive getValue () -metoder.
Detta visas i Java-programmet nedan:
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() + ')'); } }
Produktion:
Innehållet i TreeMap:
(B => Blå)
(G => Grön)
(M => Magenta)
(R => Röd)
TreeMap-implementering i Java
Följande Java-program visar huvudmetoden för TreeMap-klassen som diskuterats ovan.
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); } }
Produktion:
Ursprunglig karta: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Närmaste nedre post än 4: 3 = 9
Närmast högre inträde än 4: 5 = 25
Närmaste nedre tangent än 4: 3
Närmaste golvinträde än 6: 6 = 36
Närmaste tak Ingång än 6: 6 = 36
TreeMap första post: 1 = 1
TreeMap Senaste inmatning: 10 = 100
Omvänd TreeMap: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
TreeMap första post: 1 = 1
TreeMap Senaste inmatning: 10 = 100
Underkarta från 2 till 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
HeadMap: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
TailMap: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
Sortera TreeMap efter värde
Som standard sorteras TreeMap baserat på tangenterna enligt naturlig ordning. Men om vi vill sortera TreeMap enligt värdena måste vi använda komparatorn för att definiera sorteringen.
Nedanstående Java-program sorterar TreeMap efter värde.
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()); } } }
Produktion:
Den sorterade TreeMap baserad på värden:
B: Blå
C: Cyan
G: Grön
M: Magenta
R: Röd
Java Hashmap vs Treemap
Låt oss se några av de stora skillnaderna mellan en HashMap och TreeMap.
Tabellen nedan visar dessa skillnader.
HashMap | TreeMap |
---|---|
HashMap är mycket snabbare än TreeMap. | TreeMap går långsammare |
Implementerar kartgränssnittet. | Implementerar gränssnittet NavigableMap. |
Använder hashing-implementeringsteknik | Använd ett rött-svart träd för implementering |
Har ingen ordning på att innehålla element | Nycklarna i trädkartan är redan beställda enligt naturlig beställning |
Tillåter en nollnyckel och många nollvärden | Tillåter endast nollvärden men nycklar kan inte vara noll |
Utför grundläggande operationer, sätt in och få i konstant tid. | Ta logg (n) tid att utföra put and get-operationer |
HashMap har begränsad funktionalitet. | TreeMap-klassen ger massor av ytterligare funktioner som hjälper oss att manipulera datastrukturen. |
Använder lik () -metoden för att jämföra. | Använder jämförelsemetoden () för att jämföra. |
Vanliga frågor
F # 1) Vad är TreeMap i Java?
Svar: TreeMap i Java är en samling nyckel-värdepar som redan är sorterade. Den använder ett rött-svart träd för implementeringsändamål. Java TreeMap implementerar gränssnittet NavigableMap bortsett från Map-gränssnittet och utökar också klassen AbstractMap.
F # 2) Varför använder vi TreeMap i Java?
Svar: TreeMap används i Java för att implementera Map- och NavigableMap-gränssnitt och AbstractMap-klass. Eftersom TreeMap-tangenterna sorteras enligt den naturliga ordningen kan vi använda den här datastrukturen för att lagra katalogstruktur, trädhierarkier etc.
F # 3) Vilket är bättre - HashMap eller TreeMap?
Svar: HashMap är bättre än TreeMap. HashMap tar alltid konstant tid att utföra grundläggande operationer medan TreeMap tar log (n) tid att utföra dessa operationer. När större dataobjekt är involverade, fungerar HashMap snabbare jämfört med TreeMap.
F # 4) Sorteras TreeMap?
Svar: Ja, nyckelposterna i TreeMap sorteras efter naturlig ordning. Med TreeMap-klassen kan vi också använda en anpassad jämförare för att sortera TreeMap baserat på värden.
F # 5) Är TreeMap trådsäker?
klassificering av buggar i programvarutestning
Svar: Nej, TreeMap är inte en trådsäker samling.
Slutsats
I denna handledning diskuterade vi TreeMap i Java i detalj. TreeMap är en samling nyckel-värdepar som implementerar kartgränssnittet. Det implementerar också ett NavigableMap-gränssnitt. Elementen i TreeMap är unika och inga dubbletter är tillåtna.
Vi såg konstruktörerna och metoderna för TreeMap. Vi implementerade också TreeMap-programmet och demonstrerade de viktigaste metoderna i TreeMap-klassen. Sedan diskuterade vi skillnaderna mellan HashMap och TreeMap.
=> Besök här för att se Java Training Series för alla.
Rekommenderad läsning
- TreeSet i Java: Handledning med programmeringsexempel
- Binärt sökträd i Java - Implementering och kodexempel
- JAVA-handledning för nybörjare: 100+ praktiska Java-videohandledning
- Java String innehåller () Metodhandledning med exempel
- Vad är Java Vector | Java Vector Class Tutorial med exempel
- Jagged Array In Java - Handledning med exempel
- Java Scanner-klasshandledning med exempel
- Java String Tutorial | Java-strängmetoder med exempel