NavigableMap
The NavigableMap is an interface that provides methods dedicated to access entries of an SortedMap. Table 2 splits these methods by their nature.
|
Order methods
|
Polls methods
|
LHCF methods
|
Submap methods
|
|
descendingMap
|
firstEntry
|
lowerEntry
|
headMap
|
|
descendingKeySet
|
lastEntry
|
lowerKey
|
subMap
|
|
|
pollFirstEntry
|
higherEntry
|
tailMap
|
|
|
pollLastEntry
|
higherKey
|
|
|
|
|
ceilingEntry
|
|
|
|
|
ceilingKey
|
|
|
|
|
floorEntry
|
|
|
|
|
floorKey
|
|
Table 1. The NavigableMap is an interface that provides methods dedicated to access entries of an SortedMap.
Let's go through these items:
- Order methods are used for create descending views of a
SortedMap.
-
public NavigableMap descendingMap() obtains a reverse order view of the current map.
-
public NavigableSet descendingKeySet() obtains a reverse order navigable set view of the keys in the current map.
Note: In both cases, the changes to the map are reflected in the descending result and vice-versa.
Listing 7 shows you how to create a NavigableMap and how to use the descendingKeySet methodin the same manner you can use the descendingMap method.
- Polls methods are used to extract elements from a
SortedMap.
-
public java.util.Map.Entry firstEntry() returns the entry with the least key from the current SortedMap.
-
public java.util.Map.Entry lastEntry() returns the entry with the greatest key from the current SortedMap.
-
public java.util.Map.Entry pollFirstEntry() removes and returns the entry with the least key from the current SortedMap.
-
public java.util.Map.Entry pollLastEntry() removes and returns the entry with the greatest key from the current SortedMap.
Listing 8 demonstrates how to use the above methods. Figure 7 shows a graphical view of the application shown in Listing 8.

- LHCF methods include the
lowerKey/lowerEntry (L), higherKey/higherEntry (H), ceilingKey/ ceilingEntry (C) and floorKey/floorEntry (F) methods.
-
public java.lang.Object lowerKey(java.lang.Object key) returns the greatest key "<" than the given key (null if there is no such key).
-
public java.lang.Object higherKey(java.lang.Object key) returns the least key ">" than the given key (null if there is no such key).
-
public java.lang.Object ceilingKey(java.lang.Object key) returns the least key ">=" to the given key (null if there is no such key).
-
public java.lang.Object floorKey(java.lang.Object key) returns the greatest key "<=" to the given key (null if there is no such key).
The lowerEntry, higherEntry, ceilingEntry, and floorEntry are similar to the above corespondents, but they are used for entries.
Listing 9 shows an example of how to use the above XXXKey methods (the tested key was "9.0"). Figure 8 shows a graphical view of the application in Listing 9.

Listing 10 is an example of using the above XXXEntry methods (the key of the tested entry was "9.0"). Figure 9 shows a graphical view of the application in Listing 10.

-
Subset methods used to extract a submap from a SortedMap.
-
public NavigableMap headMap(java.lang.Object toKey,boolean inclusive) returns a submap-view of the current map whose keys are less than (or equal to, if inclusive is true) toKey. Another headMap method is: public java.util.SortedMap headMap(java.lang.Object toKey).
-
public NavigableMap subMap(java.lang.Object fromKey, boolean fromInclusive,
java.lang.Object toKey, boolean toInclusive) returns a submap-view of the current map whose keys range is [fromKey,toKey). By modifying the fromInclusive and toInclusive arguments you can obtain the following ranges: [fromKey,toKey], (fromKey,toKey), and (fromKey,toKey]. Another subMap method is: public java.util.SortedMap subMap(java.lang.Object fromKey,java.lang.Object toKey).
-
public NavigableMap tailMap(java.lang.Object fromKey,boolean inclusive) returns a submap-view of this map whose keys are greater than (or equal to, if inclusive is true) fromKey. Another tailMap method is: public java.util.SortedMap tailMap(java.lang.Object fromKey).
In all cases, the returned submap is backed by the current map, so changes in the returned submap are reflected in this map, and vice-versa.
Listing 11 demonstrates how to use these methods. Figure 10 shows a graphical view of the application in Listing 11.

Food for Thought
Generally speaking, collection mechanisms like SortedSet/SortedMap, Vector, Map, or any other collection, must also provide a strong mechanisms for their use in the same "package." If it's difficult to use, most developers will try something else. This was the case with SortedSet/SortedMap before J2SE Mustangthey were two interfaces without strong support for manipulation.
So the question is: "Why weren't java.util.NavigableSet and java.util.NavigableMap implemented at the same time as SortedSet and SortedMap?"
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|