Kaip naudoti Java TreeMap duomenų struktūrą

Kaip naudoti Java TreeMap duomenų struktūrą

„Java TreeMap“ klasė saugo duomenis medžio struktūroje, naudodama žemėlapio sąsają. Ši klasė išplečia AbstractMap klasę ir, kaip ir pagrindinė klasė, TreeMap turi dviejų tipų parametrus. Vienas iš jo tipo parametrų žymi „TreeMap“ raktus, o kitas – reikšmes.





TreeMap duomenų struktūra saugo raktų ir reikšmių poras ir leidžia atlikti CRUD operacijas su šiais duomenimis.





Kaip sukurti medžio žemėlapį Java

TreeMap klasėje yra keturi konstruktoriai, kuriuos galite naudoti kurdami naują TreeMap objektą. Numatytasis konstruktorius yra populiariausias iš keturių. Šis konstruktorius nepriima argumentų ir sukuria tuščią medžio žemėlapį.





// Create a new tree map 
TreeMap<Integer,String> customers = new TreeMap<Integer,String>();

Aukščiau pateiktas kodas generuoja tuščią medžio žemėlapį, vadinamą klientų .

TreeMap duomenų struktūros užpildymas

The įdėti () metodas prideda elementą prie TreeMap objekto. Tam reikia dviejų argumentų – rakto ir jo vertės. Elementus į medžio žemėlapį galite įtraukti bet kokia atsitiktine tvarka, o duomenų struktūra juos išsaugos didėjančia tvarka pagal jų raktus.



// Populate a tree map 
customers.put(105, "Jessica Jones");
customers.put(102, "Mark Williams");
customers.put(104, "Phil Blair");
customers.put(101, "Kim Brown");
customers.put(103, "Jim Riley");

Aukščiau pateiktas kodas prideda penkis klientus atsitiktine tvarka į klientų medžio žemėlapį.

Elementų peržiūra „TreeMap“.

TreeMap klasė savo duomenis saugo objekte. Taigi, norėdami pamatyti visus medžio žemėlapio elementus, galite tiesiog atspausdinti medžio žemėlapio objektą konsolėje:





// View all tree map items as an object 
System.out.println(customers);

Aukščiau pateiktas kodas spausdina šią išvestį į konsolę:

{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

Atminkite, kad aukščiau esančiame objekte elementai rodomi didėjančia tvarka. Taip pat galite peržiūrėti kiekvieną elementą ir atitinkamą klavišą naudodami „Java for ciklus“. .





// View all items with an iterator 
for (Entry<Integer, String> customer : customers.entrySet()) {
System.out.println("Key: " + customer.getKey() + " Value: " + customer.getValue());
}

Aukščiau pateiktas kodas spausdina šią išvestį į konsolę:

Key: 101 Value: Kim Brown 
Key: 102 Value: Mark Williams
Key: 103 Value: Jim Riley
Key: 104 Value: Phil Blair
Key: 105 Value: Jessica Jones

Elementų atnaujinimas „TreeMap“.

TreeMap klasė leidžia atnaujinti esamą elementą naudojant pakeisti () metodas. Yra du pakeitimo būdai. Pirmuoju metodu naudojamas esamas raktas ir nauja reikšmė, su kuria norite susieti esamą raktą.

// Replace existing value 
customers.replace(101,"Kim Smith");
System.out.println(customers);

Aukščiau pateiktas kodas konsolėje atspausdina šį objektą:

{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

Kaip matai Kim Brown dabar Kimas Smitas . Antrasis pakeitimo() metodas paima esamą raktą, dabartinę rakto reikšmę ir naują reikšmę, kurią norite susieti su raktu.

// Replace existing value 
customers.replace(103,"Jim Riley", "Michelle Noah");
System.out.println(customers);

Aukščiau pateiktas kodas konsolėje atspausdina šį objektą:

{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}

Aukščiau esančiame objekte Michelle Noah pakeičia Jimas Riley .

Elementų ištrynimas iš medžio žemėlapio

Jei norite pašalinti vieną elementą iš medžio žemėlapio, pašalinti () metodas yra jūsų vienintelis pasirinkimas. Jis paima raktą, susietą su norimu pašalinti elementu, ir grąžina ištrintą reikšmę.

ieškos failo dydis 16 GB RAM
// Remove an item 
customers.remove(104);
System.out.println(customers);

Vykdant aukščiau pateiktą kodą konsolėje išspausdinamas šis objektas:

{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}

Tai Java klasė taip pat turi a aišku () metodas, leidžiantis ištrinti visus medžio žemėlapio elementus.

TreeMap ir HashMap Java klasė

„TreeMap“ ir „HashMap“ yra dvi populiariausios „Java“ žemėlapių klasės. Jie abu išplečia AbstractMap klasę. Šis ryšys suteikia TreeMap ir HashMap klasėms prieigą prie daugelio tų pačių funkcijų.

Tačiau tarp šių dviejų žemėlapių klasių yra keletas pastebimų skirtumų. „TreeMap“ naudoja „Red-Black“ žemėlapio sąsajos medį, o „HashMap“ naudoja maišos lentelę. „HashMap“ leidžia išsaugoti vieną nulinį raktą, o „TreeMap“ – ne. Galiausiai, „HashMap“ yra greitesnis nei „TreeMap“. Pirmojo algoritminis greitis yra O(1), o antrosios – O(log(n)).