Med klassen HashMap i Java kan du spara data i nyckel-värdepar. Detta gör det inte bara enklare att hämta och hantera en lista, utan ger dig också många åt­komstal­ter­na­tiv. Vi går igenom de vik­ti­gas­te metoderna här.

Vad är HashMaps i Java?

Det finns olika sätt att lagra och hämta data. Vilken typ av lagring som fungerar bäst beror på hur du tänker använda data. I många fall är Java HashMap-klassen för­mod­li­gen den bästa lösningen. Till skillnad från andra metoder lagrar denna klass data som nyckel-värdepar. Det innebär att varje nyckel tilldelas exakt ett värde. Om du vill hämta ett värde kan du använda mot­sva­ran­de nyckel för att få det resultat du söker. Nycklar och värden kan bestå av helt olika datatyper, inklusive strängar, siffror eller andra objekt.

Java HashMap-klassen erbjuder flera fördelar. Den första är att du kan utföra en snabb sökning inom pro­gram­me­rings­språ­ket. Nyckel-värde-metoden sä­ker­stäl­ler också att flera värden inte tilldelas en nyckel, vilket för­hind­rar dub­belar­be­te. Du kan dock lägga till samma objekt flera gånger med olika nycklar. Denna typ av lagrings- och sök­funk­tion har en positiv effekt på pre­stan­dan jämfört med rigida listor, som är betydligt mindre flexibla. Detta är också en av de största för­de­lar­na med nyckel-vär­de­lag­ring, som använder samma princip. I följande avsnitt visar vi hur du skapar och använder Java HashMaps.

Hur man skapar och använder HashMaps i Java

För att skapa en ny HashMap i Java måste du först importera klassen. För att göra detta använder du Java-kommandot import. Koden ser ut så här:

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

De två da­ta­ty­per­na, som är åtskilda av ett kom­ma­tec­ken (i detta fall String, String), är nyckeln och värdet.

Skapa en ny HashMap

För att bättre förklara hur Java HashMaps fungerar har vi tagit fram ett enkelt exempel. I vårt exempel har vi en lista över kunder som ett företag vill lagra och kunna komma åt när som helst. Listan in­ne­hål­ler varje kunds namn och ett unikt kund­num­mer. Även om kund­num­ret (nyckeln i vårt exempel) alltid är unikt, är det möjligt att flera kunder har samma namn. Var och en av dessa kunder har dock sitt eget unika nummer. Detta nummer re­gi­stre­ras som en hel­tal­s­typ och namnen som strängar. Så här ställer du in detta i en Java HashMap:

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

Lägga till element

Nu har vi Java HashMap, men den är fort­fa­ran­de tom. För att lägga till nya nyckel-värdepar använder vi metoden put(). Så här fungerar 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 använder kommandot System.out.println för att visa vår kundlista. Re­sul­ta­tet ska se ut så här:

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

Hämta element

Nu har vi skapat en kundlista som kan innehålla flera poster. Vi vill också kunna komma åt varje kundpost in­di­vi­du­ellt. För att göra detta skickar vi nyckeln till metoden get(). Här är ett exempel på hur detta fungerar:

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

Endast namnet “Jerry Mowry” ska visas.

Radera poster

Om du vill ta bort en post använder du metoden remove(). Här är ett exempel på hur du använder den här metoden:

1

Ut­mat­ning­en ser nu ut så här:

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

Ett annat al­ter­na­tiv är att radera hela listan. För att göra detta, använd metod 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 är det enda re­sul­ta­tet vi får detta:

{ }
java

Hur man bestämmer antalet poster

Vår Java HashMap är ganska enkel, men du kan också använda den här klassen för att hantera större, mer komplexa projekt. I ett större projekt kanske du vill fast­stäl­la det exakta antalet poster du har. Det skulle ju trots allt vara hela din kundbas. Du kan använda size() för att göra detta. Så här 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 vårt exempel visas siffran 3.

Hur man visar endast nycklar eller värden

Du kan också få en lista som endast in­ne­hål­ler nycklarna eller värdena med hjälp av en for-each-slinga. För att hämta nycklar använder du metoden keySet() och för värden använder du metoden values(). I följande ko­dex­em­pel använder 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

Re­sul­ta­tet är:

Jerry Mowry
Peter Smith
Maria Grosso
java

Kon­trol­le­ra om en HashMap in­ne­hål­ler ett specifikt värde eller en specifik nyckel

Förutom att komma åt en specifik post kan du också kon­trol­le­ra om en post redan finns i en Java HashMap. Du kan göra detta med hjälp av metoden containsKey() (för nycklar) och metoden containsValue() (för värden). Om elementet finns med blir utdata ”true”. Om elementet inte finns i HashMap blir utdata ”false”. Så här fungerar de båda metoderna:

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

Eftersom nyckeln “15312” ingår, men värdet “Stuart Miller” inte gör det, ser re­sul­ta­tet ut så här.

true
false
java
Gå till huvudmeny