Razred HashMap v Javi omogoča shra­nje­va­nje podatkov v parih ključ-vrednost. To ne le olajša iskanje in upra­vlja­nje seznama, ampak vam ponuja tudi številne možnosti dostopa. Tukaj bomo pre­gle­da­li naj­po­memb­nej­še metode.

Kaj so HashMaps v Javi?

Obstajajo različni načini shra­nje­va­nja in pri­do­bi­va­nja podatkov. Kateri način shra­nje­va­nja je najboljši, je odvisno od tega, kako na­me­ra­va­te podatke upo­ra­blja­ti. V mnogih primerih je razred Java HashMap verjetno najboljša rešitev. Za razliko od drugih metod ta razred shranjuje podatke kot pare ključ-vrednost. To pomeni, da je vsakemu ključu dodeljena natanko ena vrednost. Če želite pridobiti vrednost, lahko uporabite ustrezen ključ, da dobite želeni rezultat. Ključi in vrednosti so lahko popolnoma različnih po­dat­kov­nih tipov, vključno z nizi, šte­vil­ka­mi ali drugimi objekti.

Razred Java HashMap ponuja več prednosti. Prva je, da lahko v pro­gram­skem jeziku izvedete hitro iskanje. Pristop ključ-vrednost tudi za­go­ta­vlja, da enemu ključu ni do­de­lje­nih več vrednosti, kar pre­pre­ču­je pod­va­ja­nje. Vendar lahko isti objekt dodate večkrat z raz­lič­ni­mi ključi. Ta vrsta shra­nje­va­nja in iskanja ima pozitiven učinek na zmo­glji­vost v pri­mer­ja­vi s togimi seznami, ki so bistveno manj pri­la­go­dlji­vi. To je tudi ena od glavnih prednosti shra­nje­va­nja ključ-vrednost, ki uporablja isto načelo. V na­sle­dnjih poglavjih vam bomo pokazali, kako ustvariti in upo­ra­blja­ti Java HashMaps.

Kako ustvariti in upo­ra­blja­ti HashMaps v Javi

Da bi ustvarili nov HashMap v Javi, morate najprej uvoziti razred. Za to uporabite ukaz Java import. Koda je naslednja:

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

Dva tipa podatkov, ki sta ločena z vejico (v tem primeru String, String), sta ključ in vrednost.

Ustvar­ja­nje novega HashMapa

Da bi bolje razložili, kako delujejo Java HashMaps, smo pri­pra­vi­li preprost primer. V našem primeru imamo seznam strank, ki jih želi podjetje shraniti in imeti dostop do njih kadarkoli. Seznam vključuje ime vsakega stranke in edin­stve­no številko stranke. Čeprav je številka stranke (ključ v našem primeru) vedno edin­stve­na, je mogoče, da več strank ima isto ime. Vendar ima vsaka od teh strank svojo edin­stve­no številko. Ta številka je zapisana kot ce­lo­šte­vilč­ni po­dat­kov­ni tip, imena pa kot nizi. Tako to nastavite v Java HashMap:

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

Dodajanje elementov

Sedaj imamo Java HashMap, vendar je še vedno prazen. Za dodajanje novih parov ključ-vrednost bomo uporabili metodo put(). Tako deluje:

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

Za prikaz seznama strank uporabimo ukaz System.out.println. Izpis naj bi bil takšen:

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

Pri­do­bi­va­nje elementov

Sedaj smo ustvarili seznam strank, ki lahko vsebuje številne vnose. Želimo tudi, da lahko dostopamo do vsakega vnosa stranke posebej. Da bi to naredili, prenesemo ključ metodi get(). Tukaj je primer, kako to deluje:

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

Pojaviti se mora samo ime »Jerry Mowry«.

Brisanje vnosov

Če želite od­stra­ni­ti vnos, uporabite metodo remove(). Tukaj je primer, kako uporabiti to metodo:

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

Izhod je sedaj takšen:

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

Druga možnost je izbrisati celoten seznam. Za to uporabite metodo clear().

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

Sedaj je edini izhod, ki ga dobimo, naslednji:

{ }
java

Kako določiti število vnosov

Čeprav je naš Java HashMap precej preprost, lahko to razred uporabite tudi za upra­vlja­nje večjih, bolj za­ple­te­nih projektov. Pri večjem projektu boste morda želeli določiti natančno število vnosov, ki jih imate. Konec koncev bi to bila vaša celotna baza strank. Za to lahko uporabite size(). Tako:

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

V našem primeru je izpisana številka 3.

Kako prikazati samo ključe ali vrednosti

Z uporabo zanke for-each lahko pridobite tudi seznam, ki vsebuje samo ključe ali vrednosti. Za pri­do­bi­va­nje ključev uporabite metodo keySet(), za vrednosti pa metodo values(). V na­sle­dnjem primeru kode bomo uporabili 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

Izhod je:

Jerry Mowry
Peter Smith
Maria Grosso
java

Pre­ver­ja­nje, ali HashMap vsebuje določeno vrednost ali ključ

Poleg dostopa do do­lo­če­ne­ga vnosa lahko v Java HashMap preverite tudi, ali vnos že obstaja. To lahko storite z metodo containsKey() (za ključe) in metodo containsValue() (za vrednosti). Če je element vključen, bo izhod »true«. Če element ni v HashMap, bo izhod »false«. Tako delujeta obe 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");
	System.out.println(customerList.containsKey(15312));
	System.out.println(customerList.containsValue("Stuart Miller");
	}
}
java

Ker je ključ „15312“ vključen, vrednost „Stuart Miller“ pa ni, je izhod takšen.

true
false
java

8c01fc0cbffa84535fbfd099968e78f7

213734dbd92dce8b599bfae0868c290e

90b6d2f780a1cd8dbab53089a701142a

c202b9796840cb4a85d796c37d3f6d18

949bf39a7ab38f0c52703f0f8f190078

ebdfea57806b903aff953bffe90eae7c

Go to Main Menu