HashMap-klassen i Java giver dig mulighed for at gemme data i nøgle-værdipar. Dette gør det ikke kun nemmere at hente og ad­mi­ni­stre­re en liste, men giver dig også ad­skil­li­ge ad­gangs­op­tio­ner. Vi gennemgår de vigtigste metoder her.

Hvad er HashMaps i Java?

Der findes for­skel­li­ge måder at gemme og hente data på. Hvilken type lagring der fungerer bedst, afhænger af, hvordan du har tænkt dig at bruge dataene. I mange tilfælde er Java HashMap-klassen sand­syn­lig­vis den bedste løsning. I mod­sæt­ning til andre metoder gemmer denne klasse data som nøgle-værdipar. Det betyder, at hver nøgle tildeles nøjagtigt én værdi. Hvis du vil hente en værdi, kan du bruge den til­sva­ren­de nøgle til at få det ønskede resultat. Nøgler og værdier kan bestå af helt for­skel­li­ge datatyper, herunder strenge, tal eller andre objekter.

Java HashMap-klassen tilbyder flere fordele. Den første er, at du kan foretage en hurtig søgning inden for pro­gram­me­rings­spro­get. Nøgle-værdi-tilgangen sikrer også, at der ikke tildeles flere værdier til én nøgle, hvilket for­hin­drer dup­li­ka­tio­ner. Du kan dog tilføje det samme objekt flere gange ved hjælp af for­skel­li­ge nøgler. Denne type lagrings- og sø­ge­funk­tio­na­li­tet har en positiv effekt på ydeevnen sam­men­lig­net med faste lister, som er be­ty­de­ligt mindre fleksible. Dette er også en af de største fordele ved nøgle-værdi-lagre, som bruger det samme princip. I de følgende afsnit viser vi dig, hvordan du opretter og bruger Java HashMaps.

Sådan oprettes og bruges HashMaps i Java

For at oprette en ny HashMap i Java skal du først importere klassen. For at gøre dette skal du bruge Java-kom­man­do­en import. Koden ser således ud:

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

De to datatyper, der er adskilt af et komma (i dette tilfælde String, String), er nøglen og værdien.

Op­ret­tel­se af en ny HashMap

For bedre at forklare, hvordan Java HashMaps fungerer, har vi fundet på et simpelt eksempel. I vores eksempel har vi en liste over kunder, som en virk­som­hed ønsker at gemme og have adgang til når som helst. Listen in­de­hol­der hver kundes navn og et unikt kun­de­num­mer. Selvom kun­de­num­me­ret (nøglen i vores eksempel) altid er unikt, er det muligt for flere kunder at have samme navn. Hver af disse kunder har dog deres eget unikke nummer. Dette nummer re­gi­stre­res som en hel­tals­ty­pe, og navnene som strenge. Sådan kon­fi­gu­re­res dette i en Java HashMap:

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

Til­fø­jel­se af elementer

Nu har vi Java HashMap, men den er stadig tom. For at tilføje nye nøgle-værdipar vil vi bruge metoden put(). Sådan fungerer det:

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

Vi bruger kom­man­do­en System.out.println til at vise vores kun­de­li­ste. Re­sul­ta­tet skal se sådan ud:

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

Hentning af elementer

Nu har vi oprettet en kun­de­li­ste, der kan indeholde ad­skil­li­ge poster. Vi ønsker også at kunne få adgang til hver enkelt kundepost in­di­vi­du­elt. For at gøre dette overfører vi nøglen til get() -metoden. Her er et eksempel på, hvordan dette fungerer:

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

Kun navnet ‘Jerry Mowry’ bør vises.

Sletning af poster

Hvis du vil slette en post, skal du bruge metode remove(). Her er et eksempel på, hvordan du bruger denne metode:

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

Outputtet ser nu sådan ud:

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

En anden mulighed er at slette hele listen. For at gøre dette skal du bruge metode 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

Nu er det eneste output, vi får, dette:

{ }
java

Sådan bestemmes antallet af poster

Selvom vores Java HashMap er ret enkel, kan du også bruge denne klasse til at ad­mi­ni­stre­re større, mere komplekse projekter. Med et større projekt vil du måske gerne fastslå det nøjagtige antal poster, du har. Det vil jo trods alt være hele din kundebase. Du kan bruge size() til at gøre dette. Sådan gør du:

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

I vores eksempel udskrives tallet 3.

Sådan vises kun nøgler eller værdier

Du kan også få en liste, der kun in­de­hol­der nøglerne eller værdierne, ved hjælp af en for-each-loop. For at hente nøgler skal du bruge metoden keySet(), og for værdier skal du bruge metoden values(). I det følgende ko­de­ek­sem­pel bruger vi 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

Outputtet er:

Jerry Mowry
Peter Smith
Maria Grosso
java

Kontrol af, om en HashMap in­de­hol­der en bestemt værdi eller nøgle

Ud over at få adgang til en bestemt post kan du også kon­trol­le­re, om en post allerede findes i en Java HashMap. Du kan gøre dette ved hjælp af metoden containsKey() (for nøgler) og metoden containsValue() (for værdier). Hvis elementet er in­klu­de­ret, vil outputtet være ‘true’. Hvis elementet ikke er i HashMap, vil outputtet være ‘false’. Sådan fungerer begge metoder:

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

Da nøglen ‘15312’ er in­klu­de­ret, men værdien ‘Stuart Miller’ ikke er det, ser re­sul­ta­tet sådan ud.

true
false
java

8c01fc0cbffa84535fbfd099968e78f7

829e9d23440ab443fdea3b432f768d04

Gå til ho­ved­me­nu­en