Java NavigableMap beheersen: Features, methoden en TreeMap-implementatie
Java NavigableMap-interface
Deze tutorial legt de Java NavigableMap-interface uit, de kernmethoden en hoe je het gebruikt met TreeMap.
De NavigableMap-interface van het Java collections framework biedt navigatiemogelijkheden over map-entries. Het is een gespecialiseerde SortedMap, die de functionaliteit uitbreidt met methoden die efficiënte bidirectionele traversal toestaan.
Klasse die NavigableMap implementeert
Omdat NavigableMap een interface is, kun je het niet direct instantiëren. De primaire implementatie is de TreeMap-klasse, die een zelf-balancerende binaire zoekboomstructuur biedt die keys in gesorteerde volgorde houdt.

Hoe NavigableMap te gebruiken
Eerst de interface importeren:
import java.util.NavigableMap; import java.util.TreeMap;
Maak dan een instantie aan:
// NavigableMap-implementatie door TreeMap-klasse NavigableMap<Key, Value> numbers = new TreeMap<>();
In de code hierboven is numbers een TreeMap die key-value-paren opslaat. Key is de unieke identifier, en Value de geassocieerde data.
Kernmethoden van NavigableMap
Alle SortedMap-operaties zijn beschikbaar, maar diverse zijn overschreven voor strakkere controle. Belangrijke methoden zijn:
headMap(key, booleanInclusive)
Retourneert een view van het deel van de map wiens keys strikt kleiner zijn dan key wanneer booleanInclusive false is (standaard). Als booleanInclusive true is, omvat de geretourneerde map de entry voor key.
tailMap(key, booleanInclusive)
Retourneert een view van het deel van de map wiens keys groter of gelijk zijn aan key wanneer booleanInclusive true is (standaard). Door false door te geven, sluit je de key-entry uit.
subMap(fromKey, fromInclusive, toKey, toInclusive)
Biedt een view tussen fromKey en toKey. De standaarden zijn fromInclusive = true en toInclusive = false. Het aanpassen van deze vlaggen controleert of de grenskeys deel uitmaken van de resulterende map.
Aanvullende navigatiemethoden
- descendingMap() – keert entry-volgorde om.
- descendingKeySet() – omgekeerde key-view.
- ceilingEntry(key) – laagste entry met key >= gegeven key.
- ceilingKey(key) – laagste key >= gegeven key.
- floorEntry(key) – hoogste entry met key <= gegeven key.
- floorKey(key) – hoogste key <= gegeven key.
- higherEntry(key) – laagste entry met key > gegeven key.
- higherKey(key) – laagste key > gegeven key.
- lowerEntry(key) – hoogste entry met key < gegeven key.
- lowerKey(key) – hoogste key < gegeven key.
- firstEntry() – entry met de kleinste key.
- lastEntry() – entry met de grootste key.
- pollFirstEntry() – haalt en verwijdert de eerste entry.
- pollLastEntry() – haalt en verwijdert de laatste entry.
Voor de officiële specificatie, zie de Java NavigableMap-documentatie.
TreeMap-implementatievoorbeeld
import java.util.NavigableMap; import java.util.TreeMap; class Main { public static void main(String[] args) { // Een NavigableMap aanmaken met TreeMap NavigableMap<String, Integer> numbers = new TreeMap<>(); // Elementen invoegen in de map numbers.put("Two", 2); numbers.put("One", 1); numbers.put("Three", 3); System.out.println("NavigableMap: " + numbers); // Toegang tot de eerste entry van de map System.out.println("Eerste Entry: " + numbers.firstEntry()); // Toegang tot de laatste entry van de map System.out.println("Laatste Entry: " + numbers.lastEntry()); // Verwijder de eerste entry uit de map System.out.println("Verwijderde eerste Entry: " + numbers.pollFirstEntry()); // Verwijder de laatste entry uit de map System.out.println("Verwijderde laatste Entry: " + numbers.pollLastEntry()); } }
Output
NavigableMap: {One=1, Three=3, Two=2} Eerste Entry: One=1 Laatste Entry: Two=2 Verwijderde eerste Entry: One=1 Verwijderde laatste Entry: Two=2
Leer meer over TreeMap in de Java TreeMap-documentatie.
Met een stevig begrip van de NavigableMap-interface en de TreeMap-implementatie kun je efficiënte, gesorteerde datastructuren bouwen voor je Java-applicaties.
Java
- Java Logging Meesteren: Essentiële Best Practices voor Betrouwbare Code
- C#-interfaces onder de knie: definitie, implementatie en praktische use cases
- Java-operators beheersen: typen, syntax en praktische voorbeelden
- Java's super-sleutelwoord meesteren: geavanceerd gebruik & praktische voorbeelden
- Java interfaces meesteren: concepten, implementatie en best practices
- Java Try-with-resources meesteren: automatische resource management uitgelegd
- Java NavigableSet interface: Navigatie, sortering en praktische voorbeelden
- Java Lambda-expressies: Van basis tot Stream API
- Interface vs Abstracte Klasse in Java: De Juiste Abstractie Kiezen
- Java Interfaces begrijpen: Definities, Gebruik en Best Practices
- Java 9 Private Interface Methods: Encapsulatie & herbruik verbeteren