Hva er en Java HashMap og hvordan bruker man den?
HashMap-klassen i Java lar deg lagre data i nøkkel-verdipar. Dette gjør det ikke bare enklere å hente frem og administrere en liste, men gir deg også en rekke tilgangsmuligheter. Her går vi gjennom de viktigste metodene.
Hva er HashMaps i Java?
Det finnes ulike måter å lagre og hente data på. Hvilken type lagring som fungerer best, avhenger av hvordan du har tenkt å bruke dataene. I mange tilfeller er Java HashMap-klassen sannsynligvis den beste løsningen. I motsetning til andre metoder lagrer denne klassen data som nøkkel-verdipar. Dette betyr at hver nøkkel tildeles nøyaktig én verdi. Hvis du vil hente en verdi, kan du bruke den tilhørende nøkkelen for å få det resultatet du er ute etter. Nøkler og verdier kan bestå av helt forskjellige datatyper, inkludert strenger, tall eller andre objekter.
Java HashMap-klassen har flere fordeler. Den første er at du kan utføre en rask søk i programmeringsspråket. Nøkkel-verdi-tilnærmingen sikrer også at flere verdier ikke tilordnes én nøkkel, noe som forhindrer dupliseringer. Du kan imidlertid legge til det samme objektet flere ganger ved å bruke forskjellige nøkler. Denne typen lagrings- og søkefunksjonalitet har en positiv effekt på ytelsen sammenlignet med rigide lister, som er betydelig mindre fleksible. Dette er også en av de største fordelene med nøkkel-verdilagre, som bruker samme prinsipp. I de følgende avsnittene viser vi deg hvordan du oppretter og bruker Java HashMaps.
Hvordan lage og bruke HashMaps i Java
For å opprette en ny HashMap i Java må du først importere klassen. For å gjøre dette bruker du Java-kommandoen import. Koden ser slik ut:
import java.util.HashMap;
HashMap<String, String> nameOfTheHashMap = new HashMap<String, String> ();javaDe to datatypene, som er atskilt med komma (i dette tilfellet String, String), er nøkkelen og verdien.
Opprette en ny HashMap
For å bedre forklare hvordan Java HashMaps fungerer, har vi laget et enkelt eksempel. I vårt eksempel har vi en liste over kunder som et selskap ønsker å lagre og ha tilgang til når som helst. Listen inneholder navnet på hver kunde og et unikt kundenummer. Selv om kundenummeret (nøkkelen i eksemplet vårt) alltid er unikt, er det mulig at flere kunder har samme navn. Hver av disse kundene har imidlertid sitt eget unike nummer. Dette nummeret registreres som en heltallstype, og navnene som strenger. Slik konfigurerer du dette i en Java HashMap:
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
}
}javaLegge til elementer
Nå har vi Java HashMap, men den er fortsatt tom. For å legge til nye nøkkel-verdipar, skal vi bruke metoden put(). Slik 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);
}
}javaVi bruker kommandoen System.out.println for å vise kundelisten vår. Utdataene skal se slik ut:
{1077=Jerry Mowry, 15312=Peter Smith, 73329=Maria Grosso}javaHente elementer
Nå har vi opprettet en kundeliste som kan inneholde mange oppføringer. Vi ønsker også å kunne få tilgang til hver kundeoppføring individuelt. For å gjøre dette, sender vi nøkkelen 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));
}
}javaBare navnet «Jerry Mowry» skal vises.
Slette oppføringer
Hvis du vil fjerne en oppføring, bruker du metoden remove(). Her er et eksempel på hvordan du bruker denne metoden:
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);
}
}javaUtgangen ser nå slik ut:
{15312=Peter Smith, 73329=Maria Grosso}javaEt annet alternativ er å slette hele listen. For å gjøre dette, bruk metoden 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);
}
}javaNå er det eneste resultatet vi får dette:
{ }javaHvordan bestemme antall oppføringer
Selv om vår Java HashMap er ganske enkel, kan du også bruke denne klassen til å administrere større og mer komplekse prosjekter. Med et større prosjekt vil du kanskje ønske å finne ut det eksakte antallet oppføringer du har. Dette vil tross alt være hele kundebasen din. Du kan bruke size() til å gjøre dette. Slik gjør du 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.size());
}
}javaI vårt eksempel blir tallet 3 vist.
Hvordan vise bare nøkler eller verdier
Du kan også hente en liste som bare inneholder nøklene eller verdiene ved å bruke en for-each-løkke. For å hente nøkler bruker du metoden keySet(), og for verdier bruker du metoden values(). I følgende kodeeksempel bruker 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);
}
}
}javaResultatet er:
Jerry Mowry
Peter Smith
Maria GrossojavaSjekke om en HashMap inneholder en bestemt verdi eller nøkkel
I tillegg til å få tilgang til en bestemt oppføring, kan du også sjekke om en oppføring allerede finnes i en Java HashMap. Du kan gjøre dette ved å bruke metoden containsKey() (for nøkler) og metoden containsValue() (for verdier). Hvis elementet er inkludert, vil utdataene være «true». Hvis elementet ikke er i HashMap, vil utdataene være «false». Slik fungerer begge metodene:
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");
}
}javaSiden nøkkelen «15312» er inkludert, men verdien «Stuart Miller» ikke er det, ser utdataene slik ut.
true
falsejava8c01fc0cbffa84535fbfd099968e78f7
213734dbd92dce8b599bfae0868c290e
90b6d2f780a1cd8dbab53089a701142a
c202b9796840cb4a85d796c37d3f6d18
949bf39a7ab38f0c52703f0f8f190078
5c82a31e95140e2d2bf18138c8c64c3f