Java HashMap klase ļauj saglabāt datus atslēgas-vērtības pāros. Tas ne tikai atvieglo saraksta atgūšanu un pār­val­dī­bu, bet arī nodrošina daudzas piekļuves iespējas. Šeit ap­ska­tī­sim sva­rī­gā­kās metodes.

Kas ir HashMaps Java valodā?

Ir dažādi veidi, kā uzglabāt un iegūt datus. Kāds uz­gla­bā­ša­nas veids ir vis­pie­mē­ro­tā­kais, ir atkarīgs no tā, kā jūs plānojat izmantot datus. Daudzos gadījumos Java HashMap klase, iespējams, ir labākais ri­si­nā­jums. Atšķirībā no citām metodēm, šī klase uzglabā datus kā atslēgas-vērtības pārus. Tas nozīmē, ka katrai atslēgai ir piešķirta tieši viena vērtība. Ja vēlaties iegūt vērtību, varat izmantot at­bil­sto­šo atslēgu, lai iegūtu vēlamo rezultātu. Atslēgas un vērtības var sastāvēt no pilnīgi dažādiem datu tipiem, tostarp virknēm, skaitļiem vai citiem objektiem.

Java HashMap klase piedāvā vairākas priekš­ro­cī­bas. Pirmā no tām ir iespēja veikt ātru meklēšanu prog­ram­mē­ša­nas valodā. Atslēgas-vērtības pieeja nodrošina arī to, ka vienai atslēgai netiek pie­šķir­tas vairākas vērtības, novēršot dub­lē­ša­nos. Tomēr jūs varat pievienot vienu un to pašu objektu vairākas reizes, iz­man­to­jot dažādas atslēgas. Šāda veida uz­gla­bā­ša­nas un mek­lē­ša­nas fun­kcio­na­li­tā­te pozitīvi ietekmē veikt­spē­ju sa­lī­dzi­nā­ju­mā ar stingriem sa­rak­stiem, kas ir ie­vē­ro­ja­mi mazāk elastīgi. Tas ir arī viens no gal­ve­na­jiem priekš­ro­cī­bām atslēgas-vērtības uz­gla­bā­ša­nas vietām, kas izmanto to pašu principu. Turp­mā­ka­jās sadaļās mēs parādīsim, kā izveidot un izmantot Java HashMaps.

Kā izveidot un lietot HashMaps Java valodā

Lai izveidotu jaunu HashMap Java, vispirms ir jāimportē klase. Lai to izdarītu, iz­man­to­jiet Java komandu import. Kods izskatās šādi:

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

Divi datu tipi, kas ir atdalīti ar komatu (šajā gadījumā String, String), ir atslēga un vērtība.

Jauna HashMap izveide

Lai labāk iz­skaid­ro­tu, kā darbojas Java HashMaps, esam iz­vei­do­ju­ši vienkāršu piemēru. Mūsu piemērā mums ir klientu saraksts, kuru uzņēmums vēlas saglabāt un kuram vēlas piekļūt jebkurā brīdī. Sarakstā ir katra klienta vārds un unikāls klienta numurs. Lai gan klienta numurs (mūsu piemērā tas ir atslēga) vienmēr ir unikāls, ir iespējams, ka vairākiem klientiem ir viens un tas pats vārds. Tomēr katram no šiem klientiem ir savs unikāls numurs. Šis numurs tiek re­ģis­trēts kā vesels skaitlis, bet vārdi kā virknes. Šeit ir parādīts, kā to iestatīt Java HashMap:

import java.util.HashMap;
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	}
}
java

Elementu pie­vie­no­ša­na

Tagad mums ir Java HashMap, bet tas joprojām ir tukšs. Lai pie­vie­no­tu jaunas atslēgas-vērtības pāri, mēs iz­man­to­sim put() metodi. Tā darbojas šādi:

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

Mēs iz­man­to­jam komandu System.out.println, lai parādītu mūsu klientu sarakstu. Rezultāts izskatās šādi:

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

Elementu izgūšana

Tagad esam iz­vei­do­ju­ši klientu sarakstu, kurā var būt daudz ierakstu. Mēs arī vēlamies, lai būtu iespējams piekļūt katram klienta ierakstam atsevišķi. Lai to izdarītu, mēs nododam atslēgu get() metodei. Šeit ir piemērs, kā tas darbojas:

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

Jāparādās tikai vārdam „Jerry Mowry”.

Ierakstu dzēšana

Ja vēlaties at­brī­vo­ties no ieraksta, iz­man­to­jiet remove() metodi. Šeit ir piemērs, kā izmantot šo metodi:

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

Rezultāts tagad izskatās šādi:

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

Vēl viena iespēja ir dzēst visu sarakstu. Lai to izdarītu, iz­man­to­jiet clear() metodi.

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

Tagad vienīgais rezultāts, ko iegūstam, ir šāds:

{ }
java

Kā noteikt ierakstu skaitu

Lai gan mūsu Java HashMap ir diezgan vienkāršs, šo klasi var izmantot arī lielāku, sa­rež­ģī­tā­ku projektu pār­val­dī­ša­nai. Lielāka projekta gadījumā varat noteikt precīzu ierakstu skaitu. Galu galā tas būtu jūsu viss klientu bāzes apjoms. To var izdarīt, iz­man­to­jot size(). Darbības veids:

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ūsu piemērā tiek izvadīts skaitlis 3.

Kā parādīt tikai atslēgas vai vērtības

Jūs varat arī iegūt sarakstu, kurā ir tikai atslēgas vai vērtības, iz­man­to­jot for-each cilpu. Lai atgūtu atslēgas, iz­man­to­jiet keySet() metodi, bet vērtības – values() metodi. Turp­mā­ka­jā koda piemērā mēs iz­man­to­sim 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

Rezultāts ir:

Jerry Mowry
Peter Smith
Maria Grosso
java

Pārbaudot, vai HashMap satur konkrētu vērtību vai atslēgu

Papildus piekļuvei konkrētam ierakstam, jūs varat arī pārbaudīt, vai ieraksts jau pastāv Java HashMap. To var izdarīt, iz­man­to­jot metodi containsKey() (atslēgām) un metodi containsValue() (vērtībām). Ja elements ir iekļauts, izvade būs “true”. Ja elements nav HashMap, izvade būs “false”. Šeit ir redzams, kā darbojas abas metodes:

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

Tā kā atslēga „15312” ir iekļauta, bet vērtība „Stuart Miller” nav, izvade izskatās šādi.

true
false
java

8c01fc0cbffa84535fbfd099968e78f7

213734dbd92dce8b599bfae0868c290e

90b6d2f780a1cd8dbab53089a701142a

c202b9796840cb4a85d796c37d3f6d18

53a6d2484623b6eb05c5ec103f233be1

Go to Main Menu