NavigableMap
(heute wirds sehr technisch…)
Das Collection-Framework wurde im JDK6 unter anderem um das Interface NavigableMap erweitert.
NavigableMap leitet von SortedMap ab und bringt neue Zugriffsmöglichkeiten auf Keys und Entries. Beispielsweise gibt die Methode lowerEntry(K key) den nächst kleineren Eintrag zurück. Die Methode ceilingEntry(K key) ist da weniger restriktiv. Hier gilt: kleiner oder gleich.
Interessant ist noch, dass der Rückgabetyp von headMap(K key) und headMap(K key, boolean inclusive) sich unterscheidet. Beim ersteren gibts eine SortedMap zurück, beim anderen eine NavigableMap. Laut API liegt das daran, dass vorhandene Implementierungen von SortedMap einfach an NavigableMap angepasst werden können.
Dies gilt auch für tailMap und subMap Methoden.
Implementiert wird dieses Interface von der bisher bekannten TreeMap Klasse. Hier ein kleines Beispiel.
- NavigableMap<Integer,String>; nm = new TreeMap<Integer,String>();
- nm.put(32, “Kaffee“ );
- nm.put(112, “Tee“ );
- nm.put(12, “Orangensaft“ );
- nm.put(86, “Milch“);
- nm.lowerKey(32); // 12 (Integer)
- nm.lowerEntry(32); // 12=Orangensaft (Map.Entry)
- nm.floorKey(32); // 32 (Integer)
- nm.floorEntry(32); // 32=Kaffee (Map.Entry)
- nm.headMap(32); // {12=Orangensaft} (SortedMap)!
- nm.headMap(32,true); // {12=Orangensaft,32=Kaffee} (NavigableMap)!
- nm.pollLastEntry(); // 112=Tee (Map.Entry)
- nm.toString() // {12=Orangensaft, 32=Kaffee, 86=Milch}