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 åtkomstalternativ. Vi går igenom de viktigaste 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örmodligen 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 motsvarande 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 programmeringsspråket. Nyckel-värde-metoden säkerställer också att flera värden inte tilldelas en nyckel, vilket förhindrar dubbelarbete. Du kan dock lägga till samma objekt flera gånger med olika nycklar. Denna typ av lagrings- och sökfunktion har en positiv effekt på prestandan jämfört med rigida listor, som är betydligt mindre flexibla. Detta är också en av de största fördelarna med nyckel-värdelagring, 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å datatyperna, som är åtskilda av ett kommatecken (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 innehåller varje kunds namn och ett unikt kundnummer. Även om kundnumret (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 registreras som en heltalstyp 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 fortfarande 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. Resultatet 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 individuellt. 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

Utmatningen ser nu ut så här:

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

Ett annat alternativ ä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 resultatet 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 fastställa 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 innehåller 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 kodexempel 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

Resultatet är:

Jerry Mowry
Peter Smith
Maria Grosso
java

Kontrollera om en HashMap innehåller ett specifikt värde eller en specifik nyckel

Förutom att komma åt en specifik post kan du också kontrollera 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 resultatet ut så här.

true
false
java
Gå till huvudmeny