Kas yra Java HashMap ir kaip jį naudoti
Java kalbos klasė „HashMap“ leidžia išsaugoti duomenis raktų ir verčių poromis. Tai ne tik palengvina sąrašo paiešką ir tvarkymą, bet ir suteikia daug prieigos galimybių. Čia aptarsime svarbiausius metodus.
Kas yra HashMaps Java kalboje?
Yra įvairių būdų saugoti ir gauti duomenis. Kuris saugojimo būdas yra geriausias, priklauso nuo to, kaip ketinate naudoti duomenis. Daugeliu atvejų Java HashMap klasė yra tikriausiai geriausias sprendimas. Skirtingai nuo kitų metodų, ši klasė saugo duomenis kaip raktų-verčių poras. Tai reiškia, kad kiekvienam raktui priskiriama tiksliai viena vertė. Jei norite gauti vertę, galite naudoti atitinkamą raktą, kad gautumėte norimą rezultatą. Raktas ir reikšmė gali būti sudaryti iš visiškai skirtingų duomenų tipų, įskaitant eilutes, skaičius ar kitus objektus.
Java HashMap klasė turi keletą privalumų. Pirmasis iš jų – galimybė atlikti greitą paiešką programavimo kalboje. Raktų-verčių metodas taip pat užtikrina, kad vienam raktui nebūtų priskirta keletas verčių, taip išvengiant dubliavimosi. Tačiau galite kelis kartus pridėti tą patį objektą naudodami skirtingus raktus. Šis saugojimo ir paieškos funkcionalumas turi teigiamą poveikį našumui, palyginti su nelanksčiais sąrašais, kurie yra žymiai mažiau lankstūs. Tai taip pat yra vienas iš pagrindinių raktų-verčių saugyklų, kurios naudoja tą patį principą, privalumų. Toliau pateiktuose skyriuose parodysime, kaip kurti ir naudoti Java HashMaps.
Kaip kurti ir naudoti HashMaps Java kalboje
Norėdami sukurti naują HashMap Java kalboje, pirmiausia turite importuoti klasę. Tam naudokite Java komandą import. Kodas atrodo taip:
import java.util.HashMap;
HashMap<String, String> nameOfTheHashMap = new HashMap<String, String> ();javaDu duomenų tipai, atskirti kableliu (šiuo atveju String, String), yra raktas ir vertė.
Naujo HashMap kūrimo
Norėdami geriau paaiškinti, kaip veikia Java HashMaps, pateikiame paprastą pavyzdį. Mūsų pavyzdyje turime klientų sąrašą, kurį įmonė nori saugoti ir kuriuo nori galėti naudotis bet kuriuo metu. Sąraše yra kiekvieno kliento vardas ir unikalus kliento numeris. Nors kliento numeris (mūsų pavyzdyje raktas) visada yra unikalus, gali būti, kad keli klientai turi tą patį vardą. Tačiau kiekvienas iš šių klientų turi savo unikalų numerį. Šis numeris įrašomas kaip sveikasis skaičius, o vardai – kaip eilutės. Štai kaip tai nustatyti Java HashMap:
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
}
}javaElementų pridėjimas
Dabar turime Java HashMap, bet jis vis dar tuščias. Norėdami pridėti naujas raktų-verčių poras, naudosime put() metodą. Štai kaip jis veikia:
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
customerList.put (1077, "Jerry Mowry");
customerList.put (15312, "Peter Smith");
customerList.put (73329, "Maria Grosso");
System.out.println(customerList);
}
}javaNaudojame komandą System.out.println, kad parodytume klientų sąrašą. Rezultatas turėtų atrodyti taip:
{1077=Jerry Mowry, 15312=Peter Smith, 73329=Maria Grosso}javaElementų paieška
Dabar mes sukūrėme klientų sąrašą, kuriame gali būti daug įrašų. Taip pat norime turėti galimybę atskirai pasiekti kiekvieną kliento įrašą. Tam mes perduodame raktą get() metodui. Štai pavyzdys, kaip tai veikia:
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
customerList.put (1077, "Jerry Mowry");
customerList.put (15312, "Peter Smith");
customerList.put (73329, "Maria Grosso");
System.out.println(customerList.get(1077));
}
}javaTurėtų būti rodomas tik vardas „Jerry Mowry“.
Įrašų ištrynimas
Jei norite atsikratyti įrašo, naudokite remove() metodą. Štai pavyzdys, kaip naudoti šį metodą:
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
customerList.put (1077, "Jerry Mowry");
customerList.put (15312, "Peter Smith");
customerList.put (73329, "Maria Grosso");
customerList.remove(1077);
System.out.println(customerList);
}
}javaDabar rezultatas atrodo taip:
{15312=Peter Smith, 73329=Maria Grosso}javaKita galimybė – ištrinti visą sąrašą. Tam naudokite clear() metodą.
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
customerList.put (1077, "Jerry Mowry");
customerList.put (15312, "Peter Smith");
customerList.put (73329, "Maria Grosso");
customerList.clear();
System.out.println(customerList);
}
}javaDabar vienintelis rezultatas, kurį gauname, yra šis:
{ }javaKaip nustatyti įrašų skaičių
Nors mūsų Java HashMap yra gana paprasta, šią klasę taip pat galite naudoti didesnių, sudėtingesnių projektų valdymui. Dideliuose projektuose gali prireikti nustatyti tikslaus įrašų skaičių. Juk tai bus visa jūsų klientų bazė. Tam galite naudoti size(). Štai kaip:
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
customerList.put (1077, "Jerry Mowry");
customerList.put (15312, "Peter Smith");
customerList.put (73329, "Maria Grosso");
System.out.println(customerList.size());
}
}javaMūsų pavyzdyje išvedamas skaičius 3.
Kaip rodyti tik raktus arba vertes
Naudodami for-each ciklą, taip pat galite gauti sąrašą, kuriame yra tik raktų arba verčių. Norėdami gauti raktus, naudokite keySet() metodą, o vertes – values() metodą. Toliau pateiktame kodo pavyzdyje naudosime values():
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
customerList.put (1077, "Jerry Mowry");
customerList.put (15312, "Peter Smith");
customerList.put (73329, "Maria Grosso");
for (String i : customerList.values()) {
System.out.println(i);
}
}
}javaRezultatas yra:
Jerry Mowry
Peter Smith
Maria GrossojavaPatikrinti, ar HashMap turi tam tikrą vertę ar raktą
Be prieigos prie konkretaus įrašo, taip pat galite patikrinti, ar įrašas jau egzistuoja Java HashMap. Tai galite padaryti naudodami metodą containsKey() (raktams) ir metodą containsValue() (verčių). Jei elementas yra įtrauktas, išvestis bus „true“. Jei elemento nėra HashMap, išvestis bus „false“. Štai kaip veikia abu metodai:
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
customerList.put (1077, "Jerry Mowry");
customerList.put (15312, "Peter Smith");
customerList.put (73329, "Maria Grosso");
System.out.println(customerList.containsKey(15312));
System.out.println(customerList.containsValue("Stuart Miller");
}
}javaKadangi raktas „15312“ yra įtrauktas, bet vertė „Stuart Miller“ nėra, rezultatas atrodo taip.
true
falsejava8c01fc0cbffa84535fbfd099968e78f7
213734dbd92dce8b599bfae0868c290e
90b6d2f780a1cd8dbab53089a701142a
c202b9796840cb4a85d796c37d3f6d18
ed8bd697b4974f97fcbb5108d1a932cb