De Java TreeMap-klasse slaat gegevens op in een boomstructuur met behulp van een kaartinterface. Deze klasse breidt de klasse AbstractMap uit en, net als de bovenliggende klasse, heeft TreeMap twee typeparameters. Een van de typeparameters vertegenwoordigt de sleutels in de TreeMap, terwijl de andere de waarden vertegenwoordigt.
De TreeMap-gegevensstructuur slaat sleutel-waardeparen op en stelt u in staat CRUD-bewerkingen op deze gegevens uit te voeren.
Een TreeMap maken in Java
De klasse TreeMap heeft vier constructors die u kunt gebruiken om een nieuw TreeMap-object te maken. De standaardconstructor is de meest populaire van de vier. Deze constructor neemt geen argumenten en genereert een lege boomstructuur.
// Maak een nieuwe boomkaart
Boomkaart klanten = nieuwe Boomkaart();
De bovenstaande code genereert een lege boomkaart genaamd klanten.
De TreeMap-gegevensstructuur vullen
De leggen() methode voegt een item toe aan een TreeMap-object. Er zijn twee argumenten voor nodig: een sleutel en de waarde ervan. U kunt items in willekeurige volgorde aan de boomkaart toevoegen en de gegevensstructuur zal ze in oplopende volgorde opslaan, afhankelijk van hun sleutels.
// Vul een boomkaart in
klanten.put(105, "Jessica Jones");
klanten.put(102, "Mark Williams");
klanten.put(104, "Phil Blair");
klanten.put(101, "Kim Brown");
klanten.put(103, "Jim Riley");
De bovenstaande code voegt vijf klanten, in willekeurige volgorde, toe aan de boomkaart van de klant.
Items in een TreeMap bekijken
De klasse TreeMap slaat zijn gegevens op in een object. Dus om alle items in een boomkaart te zien, kunt u eenvoudig het boomkaartobject naar de console afdrukken:
// Bekijk alle boomkaartitems als een object
System.out.println (klanten);
De bovenstaande code drukt de volgende uitvoer af naar de console:
{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}
Merk op dat het bovenstaande object de items in oplopende volgorde weergeeft. U kunt elk item en de bijbehorende sleutel ook bekijken met een Java for-lus.
// Bekijk alle items met een iterator
voor (Entree klant: klanten.entrySet()) {
System.out.println("Sleutel: " + klant.getKey() + "Waarde: " + klant.getValue());
}
De bovenstaande code drukt de volgende uitvoer af naar de console:
Sleutel: 101 Waarde: Kim Brown
Sleutel: 102 Waarde: Mark Williams
Sleutel: 103 Waarde: Jim Riley
Sleutel: 104 Waarde: Phil Blair
Sleutel: 105 Waarde: Jessica Jones
Items in een TreeMap bijwerken
Met de klasse TreeMap kunt u een bestaand item bijwerken met de vervangen() methode. Er zijn twee vervangingsmethoden. De eerste methode neemt een bestaande sleutel en de nieuwe waarde waaraan u de bestaande sleutel wilt toewijzen.
// Vervang bestaande waarde
klanten.vervangen(101"Kim Smit");
System.out.println (klanten);
De bovenstaande code drukt het volgende object af in de console:
{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}
Zoals je kan zien Kim Brown is nu Kim Smith. De tweede methode Replace() neemt een bestaande sleutel, de huidige waarde van de sleutel en de nieuwe waarde die u aan de sleutel wilt toewijzen.
// Vervang bestaande waarde
klanten.vervangen(103"Jim Riley", "Michelle Noah");
System.out.println (klanten);
De bovenstaande code drukt het volgende object af in de console:
{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}
In het bovenstaande object Michelle Noah vervangt Jim Riley.
Items verwijderen uit de TreeMap
Als u een enkel item van de boomkaart wilt verwijderen, verwijderen() methode is uw enige optie. Het neemt de sleutel die is gekoppeld aan het item dat u wilt verwijderen en retourneert de verwijderde waarde.
// Een item verwijderen
klanten.verwijder(104);
System.out.println (klanten);
Als u de bovenstaande code uitvoert, wordt het volgende object naar de console afgedrukt:
{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}
Deze Java-klasse heeft ook een Doorzichtig() methode waarmee u alle items in de boomstructuurkaart kunt verwijderen.
De TreeMap vs. de HashMap Java-klasse
TreeMap en HashMap zijn twee van de meer populaire Java-kaartklassen. Ze breiden allebei de klasse AbstractMap uit. Deze relatie geeft de klassen TreeMap en HashMap toegang tot veel van dezelfde functies.
Er zijn echter enkele opmerkelijke verschillen tussen deze twee kaartklassen. De TreeMap gebruikt een rood-zwarte boomimplementatie van de kaartinterface, terwijl de HashMap een hashtabel gebruikt. Met HashMap kunt u een enkele null-sleutel opslaan, terwijl TreeMap dat niet doet. Ten slotte is een HashMap sneller dan een TreeMap. De algoritmische snelheid van de eerste is O(1), die van de laatste is O(log (n)).