Java HashMap-klass võimaldab sal­ves­tada andmeid võti-väärtuse paaridena. See mitte ainult ei lihtsusta nimekirja otsimist ja haldamist, vaid pakub ka mitmeid juur­de­pää­su­või­ma­lusi. Siin vaatame läbi kõige olu­li­se­mad meetodid.

Mis on HashMaps Java-s?

Andmete sal­ves­ta­miseks ja ot­si­miseks on mitmeid viise. Milline sal­ves­tus­viis sobib kõige paremini, sõltub sellest, kuidas te andmeid kasutada kavatsete. Paljudel juhtudel on Java HashMap-klass ilmselt parim lahendus. Erinevalt teistest mee­to­di­test salvestab see klass andmed võti-väärtuse paaridena. See tähendab, et igale võtmele on määratud täpselt üks väärtus. Kui soovite väärtust otsida, saate vastava võtme abil leida soovitud tulemuse. Võtmed ja väärtused võivad koosneda täiesti eri­ne­va­test and­me­tüü­pi­dest, seal­hul­gas strin­gi­dest, numb­ri­test või muudest ob­jek­ti­dest.

Java HashMap-klass pakub mitmeid eeliseid. Esiteks võimaldab see teha kiiret otsingut prog­ram­mee­ri­mis­kee­les. Võti-väärtuse lä­he­ne­mine tagab ka, et ühele võtmele ei määrataks mitut väärtust, vältides dub­lee­ri­mist. Siiski on võimalik lisada sama objekt mitu korda, kasutades erinevaid võtmeid. Selline salvestus- ja ot­sin­gu­funkt­sio­naal­sus mõjub po­si­tiiv­selt jõud­lu­sele võrreldes jäikade ni­me­kir­ja­dega, mis on oluliselt vähem paind­li­kud. See on ka üks peamisi eeliseid võti-väärtus-sal­ves­tus­pai­ka­des, mis kasutavad sama põhimõtet. Järg­mis­tes jaotistes näitame, kuidas luua ja kasutada Java HashMaps’i.

Kuidas luua ja kasutada HashMaps’i Java’s

Uue HashMap’i loomiseks Java’s peate esmalt importima klassi. Selleks kasutage Java käsku import. Kood näeb välja järgmine:

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

Kaks and­me­tüüpi, mis on eraldatud komaga (antud juhul String, String), on võti ja väärtus.

Uue HashMap’i loomine

Java Hash­Ma­pide toimimise paremaks sel­gi­ta­miseks oleme välja töötanud lihtsa näite. Meie näites on meil nimekiri klien­ti­dest, mida ettevõte soovib sal­ves­tada ja millele ta soovib igal ajal juur­de­pääsu. Nimekiri sisaldab iga kliendi nime ja uni­kaal­set klien­di­numb­rit. Kuigi klien­di­num­ber (meie näites võti) on alati unikaalne, on võimalik, et mitmel kliendil on sama nimi. Igal neist klien­ti­dest on aga oma unikaalne number. See number sal­ves­ta­takse täis­ar­vuna ja nimed sal­ves­ta­takse strin­gi­dena. Siin on näide, kuidas seda Java HashMapis sea­dis­tada:

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

Ele­men­tide lisamine

Nüüd on meil Java HashMap, kuid see on veel tühi. Uute võti-väärtuse paaride li­sa­miseks kasutame meetodit put(). See toimib järg­mi­selt:

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

Kasutame käsku System.out.println, et kuvada oma klientide nimekiri. Väljund peaks välja nägema järgmine:

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

Ele­men­tide otsimine

Nüüd oleme loonud klientide nimekirja, mis võib sisaldada mitmeid kirjeid. Samuti soovime, et iga kliendi kirje oleks eraldi kät­te­saa­dav. Selleks edastame võtme meetodile get(). Siin on näide, kuidas see toimib:

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

Ainult nimi „Jerry Mowry” peaks ilmuma.

Kande kus­tu­ta­mine

Kui soovite kirje kustutada, kasutage meetodit remove(). Siin on näide selle meetodi ka­su­ta­mise kohta:

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

Väljund näeb nüüd välja järgmine:

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

Teine võimalus on kustutada kogu nimekiri. Selleks kasutage meetodit 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

Nüüd on ainus väljund, mida saame, järgmine:

{ }
java

Kuidas määrata sis­se­kan­nete arv

Kuigi meie Java HashMap on üsna lihtne, võite seda klassi kasutada ka suuremate ja kee­ru­li­se­mate pro­jek­tide hal­da­miseks. Suurema projekti puhul võite soovida kindlaks teha oma kirjeid täpse arvu. Lõppude lõpuks on see kogu teie klientuur. Selleks võite kasutada size(). Siin on, kuidas seda teha:

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

Meie näites väl­jas­ta­takse number 3.

Kuidas kuvada ainult võtmeid või väärtusi

For-each-tsükli abil saate ka nimekirja, mis sisaldab ainult võtmeid või väärtusi. Võtmete han­ki­miseks kasutage meetodit keySet() ja väärtuste han­ki­miseks meetodit values(). Järgmises koo­di­näi­tes kasutame 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

Väljund on:

Jerry Mowry
Peter Smith
Maria Grosso
java

Kont­rol­li­mine, kas HashMap sisaldab kindlat väärtust või võtit

Lisaks konk­reetse kande juur­de­pää­sule saate ka kont­rol­lida, kas Java HashMapis on juba olemas vastav kanne. Selleks kasutage meetodit containsKey() (võtmete jaoks) ja meetodit containsValue() (väärtuste jaoks). Kui element on olemas, on väl­jun­diks „true”. Kui elementi HashMapis ei ole, on väl­jun­diks „false”. Mõlemad meetodid toimivad järg­mi­selt:

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

Kuna võti „15312” on olemas, aga väärtus „Stuart Miller” puudub, on väljund järgmine.

true
false
java

8c01fc0cbffa84535fbfd099968e78f7

213734dbd92dce8b599bfae0868c290e

90b6d2f780a1cd8dbab53089a701142a

c202b9796840cb4a85d796c37d3f6d18

47909b925938288a1b0382d6fea25b6b

Go to Main Menu