The ceilingKey() function of TreeMap Class returns the least key greater than or equal to the given key or null if the such a key is absent.
Syntax:
public K ceilingKey(K key)
Parameters: This method accepts a mandatory parameter key which is the key to be searched for.
Return Value: This method returns the least key which is greater than or equal to the given key value.
If such a key is absent, null is returned.
Exceptions: This method throws following exceptions:
- ClassCastException – Thrown if the specified key can’t be compared with the given key values.
- NullPointerException – Thrown if the given key is null and the map uses natural ordering or the comparator does not permit null values.
Below are the examples to illustrate ceilingKey() method:
Program 1: To demonstrate use of ceilingKey() method for a TreeMap with comparator
import java.util.*;  public class Main {    public static void main(String[] args)    {          // creating tree map        NavigableMap<Integer, String>            treemap = new TreeMap<Integer,                                  String>((a, b)                                              -> ((a > b)                                                      ? 1                                                      : ((a == b)                                                             ? 0                                                             : -1)));          // populating tree map        treemap.put(1, " A ");        treemap.put(2, " B ");        treemap.put(3, " C ");        treemap.put(4, " D ");        treemap.put(6, " E ");        try {            System.out.println("Ceiling key entry for 5: "                               + treemap.ceilingKey(5));        }        catch (Exception e) {            System.out.println("Exception: " + e);        }    }} |
Ceiling key entry for 5: 6
Program 2: To demonstrate use of ceilingKey() method for a TreeMap without any comparator
import java.util.*;  public class Main {    public static void main(String[] args)    {          // creating tree map        NavigableMap<Integer, String>            treemap = new TreeMap<Integer, String>();          // populating tree map        treemap.put(1, " A ");        treemap.put(2, " B ");        treemap.put(3, " C ");        treemap.put(4, " D ");        treemap.put(6, " E ");        treemap.put(7, " F ");          // Since 6 is the least value greater than 5,        // it is returned as the key.        System.out.println("Ceiling key entry for 5: "                           + treemap.ceilingKey(5));    }} |
Ceiling key entry for 5: 6
Program 3: To demonstrate use of ceilingKey() method when it will return null
import java.util.*;  public class Main {    public static void main(String[] args)    {          // creating tree map        NavigableMap<Integer, String>            treemap = new TreeMap<Integer, String>();          // populating tree map        treemap.put(1, " A ");        treemap.put(2, " B ");        treemap.put(3, " C ");        treemap.put(4, " E ");        treemap.put(5, " D ");          // Since 10 is not present in the Map        // and neither any Key is present greater than 10        // Hence this will return null        System.out.println("Ceiling key entry for 10: "                           + treemap.ceilingKey(10));    }} |
Ceiling key entry for 10: null
Program 4: To show NullPointerException
import java.util.*;  public class Main {    public static void main(String[] args)    {          // creating tree map        TreeMap<Integer, String>            treemap = new TreeMap<Integer, String>();          // populating tree map        treemap.put(2, " two ");        treemap.put(1, " one ");        treemap.put(3, " three ");        treemap.put(6, " six ");        treemap.put(5, " five ");          try {            // returns a NullPointerException            // as key value can't be null            // because of natural ordering            System.out.println("Ceiling key entry for null value : "                               + treemap.ceilingKey(null));        }        catch (Exception e) {            System.out.println("Exception: " + e);        }    }} |
Exception: java.lang.NullPointerException
Program 5: To demonstrate ClassCastException
import java.util.*;  public class Main {    public static void main(String[] args)    {          // creating tree map        NavigableMap<Object, String>            treemap = new TreeMap<Object, String>();          // populating tree map        treemap.put(1, " A ");        treemap.put(2, " B ");        treemap.put(3, " C ");        treemap.put(4, " E ");        treemap.put(5, " D ");          try {            // returns ClassCastException            // as we cannot compare a String object with an Integer object            System.out.println("Ceiling key entry for \"asd\": "                               + treemap.ceilingKey(new String("asd")));        }        catch (Exception e) {            System.out.println("Exception: " + e);        }    }} |
Exception: java.lang.ClassCastException:
java.lang.Integer cannot be cast to java.lang.String
