Finding greatest number less than given value is used in many a places and having that feature in a map based container is always a plus. Java.util.TreeMap also offers this functionality using floor() function. There are 2 variants, both are discussed below.
1. floorEntry() : It returns a key-value mapping associated with the greatest key less than or equal to the given key, or null if there is no such key.
Parameters: key : This is the key to be matched. Return Value: It returns an entry with the greatest key less than or equal to key, or null if there is no such key. Exception: ClassCastException : This exception is thrown if the specified key cannot be compared with the keys currently in the map. NullPointerException : This exception is thrown if the specified key is null and this map uses natural ordering, or its comparator does not permit null keys.
// Java code to demonstrate the working // of floorEntry() import java.io.*; import java.util.*; public class floorEntry { public static void main(String[] args) { // Declaring the tree map of Integer and String TreeMap<Integer, String> tmp = new TreeMap<Integer, String>(); // assigning the values in the tree map // using put() tmp.put( 10 , "ten" ); tmp.put( 7 , "seven" ); tmp.put( 19 , "nineteen" ); tmp.put( 3 , "three" ); // use of floorEntry() // displays the floor value of 6 // prints 3=three System.out.println( "The greatest key-value less than 6 is : " + tmp.floorEntry( 6 )); } } |
Output:
The greatest key-value less than 6 is : 3=three
2. floorKey() : It returns the greatest key less than or equal to the given key, or null if there is no such key.
Parameters: key : This is the key to be matched. Return Value: It returns an entry with the greatest key less than or equal to key, or null if there is no such key. Exception: ClassCastException : This exception is thrown if the specified key cannot be compared with the keys currently in the map. NullPointerException : This exception is thrown if the specified key is null and this map uses natural ordering, or its comparator does not permit null keys.
// Java code to demonstrate the working // of floorKey() import java.io.*; import java.util.*; public class floorKey { public static void main(String[] args) { // Declaring the tree map of Integer and String TreeMap<Integer, String> tmp = new TreeMap<Integer, String>(); // assigning the values in the tree map // using put() tmp.put( 10 , "ten" ); tmp.put( 7 , "seven" ); tmp.put( 19 , "nineteen" ); tmp.put( 3 , "three" ); // use of floorKey() // displays the floor key of // prints 3 System.out.println( "The greatest key less than 6 is : " + tmp.floorKey( 6 )); } } |
Output:
The greatest key less than 6 is : 3
Practical Application : The possible applications of this functions are aplenty. Starting from maximum distance with given petrol or possible dishes with given ingredients. Former one is discussed in code below.
// Java code to demonstrate the application // of floorKey() and floorEntry import java.io.*; import java.util.*; public class floorappli { public static void main(String[] args) { // Declaring the tree map of Integer and String TreeMap<Integer, String> destin = new TreeMap<Integer, String>(); // assigning the km with destination // from beginning // using put() destin.put( 10 , "Delhi" ); destin.put( 7 , "Gurgaon" ); destin.put( 19 , "Noida" ); destin.put( 3 , "Ring Road" ); // Entering the available Petrol (consider 1km/litre) int petr = 12 ; // Maximum place you can reach System.out.println( "The maximum place you can reach with given petrol : " + destin.floorEntry(petr)); } } |
Output:
The maximum place you can reach with given petrol : 10=Delhi