Java:
Bruke associative tabeller
Hvordan:
Java har ikke innebygde assosiative tabeller som noen språk har, men det gir Map
-grensesnittet og klasser som HashMap
og TreeMap
for å fylle den rollen. Slik bruker du en HashMap
:
import java.util.HashMap;
import java.util.Map;
public class LearnMaps {
public static void main(String[] args) {
// Oppretter en HashMap
Map<String, Integer> ageOfFriends = new HashMap<>();
// Legger til elementer
ageOfFriends.put("Alice", 24);
ageOfFriends.put("Bob", 30);
ageOfFriends.put("Charlie", 28);
// Får tilgang til elementer
System.out.println("Alice's alder: " + ageOfFriends.get("Alice"));
// Håndtering av ikke-eksisterende nøkler
System.out.println("Alder på noen som ikke er i kartet: " + ageOfFriends.getOrDefault("Dan", -1));
// Itererer over elementer
for (Map.Entry<String, Integer> entry : ageOfFriends.entrySet()) {
System.out.println(entry.getKey() + " er " + entry.getValue() + " år gammel.");
}
}
}
Eksempel på utskrift:
Alice's alder: 24
Alder på noen som ikke er i kartet: -1
Alice er 24 år gammel.
Bob er 30 år gammel.
Charlie er 28 år gammel.
HashMap
er bare én implementasjon. Hvis nøklene dine er unike og du trenger dem sortert, vurder TreeMap
. For et kart som beholder rekkefølgen ved innsetting, er LinkedHashMap
din venn.
Dypdykking
Ordbøker i Java er en del av Collections Framework, introdusert i JDK 1.2, men har sett betydelige forbedringer over årene, inkludert introduksjonen av forEach
-metoden i Java 8 for lettere iterasjon over oppføringer. Valget av kartimplementasjon (HashMap
, LinkedHashMap
, TreeMap
) bør dikteres av dine spesifikke behov når det gjelder ordning og ytelse. For eksempel tilbyr HashMap
O(1) tidsytelse for de grunnleggende operasjonene (get og put), forutsatt at hashfunksjonen sprer elementene skikkelig blant bøttene. Imidlertid, hvis du trenger sortering basert på naturlig ordning eller egendefinerte sammenligninger, er TreeMap
veien å gå, som gir O(log n) tid for innsetting og oppslag.
Før Map
ble introdusert, ble assosiative tabeller vanligvis implementert med to parallelle tabeller (en for nøkler, en for verdier) eller egendefinerte datastrukturer med mindre effektivitet. Nåværende alternativer til Map
og dens implementasjoner kunne inkludere tredjepartsbiblioteker som tilbyr spesialiserte kart, som toveiskart (BiMap i Googles Guava-bibliotek) for tilfeller der du trenger å finne en nøkkel ved dens verdi effektivt. Imidlertid, for de fleste bruksområder i Java, er standardbibliotekets kart robuste og fleksible nok til å håndtere oppgaven.