Java:
Gebruik van associatieve arrays
Hoe te:
Java heeft geen ingebouwde associatieve arrays zoals sommige talen dat wel hebben, maar het biedt de Map
interface en klassen zoals HashMap
en TreeMap
om die rol te vervullen. Hier is hoe je een HashMap
gebruikt:
import java.util.HashMap;
import java.util.Map;
public class LearnMaps {
public static void main(String[] args) {
// Een HashMap maken
Map<String, Integer> leeftijdVanVrienden = new HashMap<>();
// Elementen toevoegen
leeftijdVanVrienden.put("Alice", 24);
leeftijdVanVrienden.put("Bob", 30);
leeftijdVanVrienden.put("Charlie", 28);
// Elementen openen
System.out.println("Alice's leeftijd: " + leeftijdVanVrienden.get("Alice"));
// Omgaan met niet-bestaande sleutels
System.out.println("Leeftijd van iemand die niet in de map staat: " + leeftijdVanVrienden.getOrDefault("Dan", -1));
// Over elementen itereren
for (Map.Entry<String, Integer> entry : leeftijdVanVrienden.entrySet()) {
System.out.println(entry.getKey() + " is " + entry.getValue() + " jaar oud.");
}
}
}
Voorbeelduitvoer:
Alice's leeftijd: 24
Leeftijd van iemand die niet in de map staat: -1
Alice is 24 jaar oud.
Bob is 30 jaar oud.
Charlie is 28 jaar oud.
HashMap
is slechts één implementatie. Als je unieke sleutels hebt en je hebt ze gesorteerd nodig, overweeg dan een TreeMap
. Voor een map die de volgorde van invoeging behoudt, is LinkedHashMap
je vriend.
Diepgaande Duik
Maps in Java zijn onderdeel van de Collections Framework, geïntroduceerd in JDK 1.2, maar hebben in de loop der jaren aanzienlijke verbeteringen gezien, inclusief de introductie van de forEach
methode in Java 8 voor eenvoudigere iteratie over entries. De keuze voor de mapimplementatie (HashMap
, LinkedHashMap
, TreeMap
) moet worden bepaald door je specifieke behoeften op het gebied van ordening en prestaties. Bijvoorbeeld, HashMap
biedt een O(1) tijdsprestatie voor de basisbewerkingen (get en put), ervan uitgaande dat de hashfunctie de elementen goed verspreidt over de emmers. Echter, als je sortering nodig hebt op basis van natuurlijke ordening of aangepaste vergelijkers, is TreeMap
de juiste keuze, die O(log n) tijd biedt voor invoeging en opzoeking.
Voordat Map
werd geïntroduceerd, werden associatieve arrays meestal geïmplementeerd met twee parallelle arrays (één voor sleutels, één voor waarden) of aangepaste datastructuren met minder efficiëntie. Huidige alternatieven voor Map
en zijn implementaties kunnen third-party bibliotheken omvatten die gespecialiseerde maps aanbieden, zoals bidirectionele maps (BiMap in Google’s Guava bibliotheek) voor gevallen waarin je efficiënt een sleutel op zijn waarde moet kunnen vinden. Echter, voor de meeste gebruiksscenario’s in Java, zijn de standaardbibliotheek’s maps robuust en flexibel genoeg om de taak aan te kunnen.