Java kalbos klasė „HashMap“ leidžia išsaugoti duomenis raktų ir verčių poromis. Tai ne tik pa­leng­vi­na sąrašo paiešką ir tvarkymą, bet ir suteikia daug prieigos galimybių. Čia aptarsime svar­biau­sius metodus.

Kas yra HashMaps Java kalboje?

Yra įvairių būdų saugoti ir gauti duomenis. Kuris saugojimo būdas yra ge­riau­sias, priklauso nuo to, kaip ketinate naudoti duomenis. Daugeliu atvejų Java HashMap klasė yra tik­riau­siai ge­riau­sias spren­di­mas. Skir­tin­gai nuo kitų metodų, ši klasė saugo duomenis kaip raktų-verčių poras. Tai reiškia, kad kiek­vie­nam raktui pri­ski­ria­ma tiksliai viena vertė. Jei norite gauti vertę, galite naudoti ati­tin­ka­mą 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ą prog­ra­ma­vi­mo kalboje. Raktų-verčių metodas taip pat užtikrina, kad vienam raktui nebūtų priskirta keletas verčių, taip iš­ven­giant dub­lia­vi­mo­si. Tačiau galite kelis kartus pridėti tą patį objektą naudodami skir­tin­gus raktus. Šis saugojimo ir paieškos funk­cio­na­lu­mas turi teigiamą poveikį našumui, palyginti su ne­lanks­čiais sąrašais, kurie yra žymiai mažiau lankstūs. Tai taip pat yra vienas iš pag­rin­di­nių raktų-verčių saugyklų, kurios naudoja tą patį principą, privalumų. Toliau pa­teik­tuo­se skyriuose pa­ro­dy­si­me, kaip kurti ir naudoti Java HashMaps.

Kaip kurti ir naudoti HashMaps Java kalboje

Norėdami sukurti naują HashMap Java kalboje, pir­miau­sia turite im­por­tuo­ti klasę. Tam naudokite Java komandą import. Kodas atrodo taip:

import java.util.HashMap;
HashMap<String, String> nameOfTheHashMap = new HashMap<String, String> ();
java

Du duomenų tipai, atskirti kableliu (šiuo atveju String, String), yra raktas ir vertė.

Naujo HashMap kūrimo

Norėdami geriau pa­aiš­kin­ti, kaip veikia Java HashMaps, pa­tei­kia­me 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 kiek­vie­nas 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<>();
	}
}
java

Elementų pri­dė­ji­mas

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);
	}
}
java

Naudojame komandą System.out.println, kad pa­ro­dy­tu­me klientų sąrašą. Re­zul­ta­tas turėtų atrodyti taip:

{1077=Jerry Mowry, 15312=Peter Smith, 73329=Maria Grosso}
java

Elementų 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 per­duo­da­me 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));
	}
}
java

Turėtų būti rodomas tik vardas „Jerry Mowry“.

Įrašų iš­try­ni­mas

Jei norite at­si­kra­ty­ti į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);
	}
}
java

Dabar re­zul­ta­tas atrodo taip:

{15312=Peter Smith, 73329=Maria Grosso}
java

Kita 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);
	}
}
java

Dabar vie­nin­te­lis re­zul­ta­tas, kurį gauname, yra šis:

{ }
java

Kaip nustatyti įrašų skaičių

Nors mūsų Java HashMap yra gana paprasta, šią klasę taip pat galite naudoti didesnių, su­dė­tin­ges­nių projektų valdymui. Di­de­liuo­se pro­jek­tuo­se 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());
	}
}
java

Mū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 pa­teik­ta­me 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);
		}
	}
}
java

Re­zul­ta­tas yra:

Jerry Mowry
Peter Smith
Maria Grosso
java

Pa­tik­rin­ti, ar HashMap turi tam tikrą vertę ar raktą

Be prieigos prie konk­re­taus įrašo, taip pat galite pa­tik­rin­ti, ar įrašas jau eg­zis­tuo­ja 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");
	}
}
java

Kadangi raktas „15312“ yra įtrauktas, bet vertė „Stuart Miller“ nėra, re­zul­ta­tas atrodo taip.

true
false
java

8c01fc0cbffa84535fbfd099968e78f7

213734dbd92dce8b599bfae0868c290e

90b6d2f780a1cd8dbab53089a701142a

c202b9796840cb4a85d796c37d3f6d18

ed8bd697b4974f97fcbb5108d1a932cb

Go to Main Menu