Wat is een Java HashMap en hoe gebruik je deze?
Met de HashMap-klasse in Java kunt u gegevens opslaan in sleutel-waardeparen. Dit maakt het niet alleen gemakkelijker om een lijst op te halen en te beheren, maar biedt u ook tal van toegangsopties. We zullen hier de belangrijkste methoden bespreken.
Wat zijn HashMaps in Java?
Er zijn verschillende manieren om gegevens op te slaan en op te halen. Welk type opslag het beste werkt, hangt af van hoe u de gegevens wilt gebruiken. In veel gevallen is de Java HashMap-klasse waarschijnlijk de beste oplossing. In tegenstelling tot andere methoden slaat deze klasse gegevens op als sleutel-waardeparen. Dit betekent dat aan elke sleutel precies één waarde wordt toegewezen. Als u een waarde wilt ophalen, kunt u de bijbehorende sleutel gebruiken om het gewenste resultaat te krijgen. Sleutels en waarden kunnen bestaan uit totaal verschillende gegevenstypen, waaronder tekenreeksen, getallen of andere objecten.
De Java HashMap-klasse biedt verschillende voordelen. Het eerste voordeel is dat u snel kunt zoeken binnen de programmeertaal. De sleutel-waardebenadering zorgt er ook voor dat er niet meerdere waarden aan één sleutel worden toegewezen, waardoor duplicaties worden voorkomen. U kunt echter wel hetzelfde object meerdere keren toevoegen met verschillende sleutels. Dit type opslag- en zoekfunctionaliteit heeft een positief effect op de prestaties in vergelijking met rigide lijsten, die aanzienlijk minder flexibel zijn. Dit is ook een van de grote voordelen van sleutel-waardeopslagplaatsen, die hetzelfde principe gebruiken. In de volgende paragrafen laten we u zien hoe u Java HashMaps kunt maken en gebruiken.
Hoe HashMaps in Java te maken en te gebruiken
Om een nieuwe HashMap in Java te maken, moet je eerst de klasse importeren. Gebruik hiervoor het Java-commando import. De code ziet er als volgt uit:
import java.util.HashMap;
HashMap<String, String> nameOfTheHashMap = new HashMap<String, String> ();javaDe twee gegevenstypen, die worden gescheiden door een komma (in dit geval String, String), zijn de sleutel en de waarde.
Een nieuwe HashMap maken
Om beter uit te leggen hoe Java HashMaps werken, hebben we een eenvoudig voorbeeld bedacht. Voor ons voorbeeld hebben we een lijst met klanten die een bedrijf wil opslaan en op elk moment wil kunnen raadplegen. De lijst bevat de naam van elke klant en een uniek klantnummer. Hoewel het klantnummer (de sleutel in ons voorbeeld) altijd uniek is, is het mogelijk dat meerdere klanten dezelfde naam hebben. Elk van deze klanten heeft echter een eigen uniek nummer. Dit nummer wordt opgeslagen als een integer gegevenstype en de namen als strings. Hieronder wordt uitgelegd hoe u dit in een Java HashMap kunt instellen:
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
}
}javaElementen toevoegen
Nu hebben we de Java HashMap, maar deze is nog leeg. Om nieuwe sleutel-waardeparen toe te voegen, gaan we de methode put() gebruiken. Zo werkt het:
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);
}
}javaWe gebruiken het commando System.out.println om onze klantenlijst weer te geven. De uitvoer zou er als volgt uit moeten zien:
{1077=Jerry Mowry, 15312=Peter Smith, 73329=Maria Grosso}javaElementen ophalen
Nu hebben we een klantenlijst opgezet die talrijke vermeldingen kan bevatten. We willen ook elke klantvermelding afzonderlijk kunnen openen. Hiervoor geven we de sleutel door aan de methode get(). Hier is een voorbeeld van hoe dit werkt:
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));
}
}javaAlleen de naam ‘Jerry Mowry’ mag worden weergegeven.
Verwijderen van vermeldingen
Als u een vermelding wilt verwijderen, gebruikt u de remove() methode. Hier volgt een voorbeeld van hoe u deze methode kunt gebruiken:
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);
}
}javaDe uitvoer ziet er nu als volgt uit:
{15312=Peter Smith, 73329=Maria Grosso}javaEen andere optie is om de hele lijst te verwijderen. Gebruik hiervoor de 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);
}
}javaNu is de enige uitvoer die we krijgen deze:
{ }javaHoe bepaal je het aantal inzendingen?
Hoewel onze Java HashMap vrij eenvoudig is, kunt u deze klasse ook gebruiken om grotere, complexere projecten te beheren. Bij een groter project wilt u misschien het exacte aantal items bepalen dat u hebt. Dit is immers uw volledige klantenbestand. U kunt hiervoor size() gebruiken. Dat doet u als volgt:
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());
}
}javaIn ons voorbeeld wordt het getal 3 weergegeven.
Hoe alleen sleutels of waarden weergeven
U kunt ook een lijst verkrijgen die alleen de sleutels of de waarden bevat, met behulp van een for-each-lus. Gebruik de methode keySet() om sleutels op te halen en de methode values() voor waarden. In het volgende codevoorbeeld gebruiken we 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);
}
}
}javaDe uitvoer is:
Jerry Mowry
Peter Smith
Maria GrossojavaControleren of een HashMap een specifieke waarde of sleutel bevat
Naast het openen van een specifieke invoer, kunt u ook controleren of een invoer al bestaat in een Java HashMap. U kunt dit doen met behulp van methode containsKey() (voor sleutels) en methode containsValue() (voor waarden). Als het element is opgenomen, is de uitvoer ‘true’. Als het element niet in de HashMap staat, is de uitvoer ‘false’. Hieronder ziet u hoe beide methoden werken:
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");
}
}javaAangezien de sleutel ‘15312’ is opgenomen, maar de waarde ‘Stuart Miller’ niet, ziet de uitvoer er als volgt uit.
true
falsejava