// from gee.cs.oswego.edu/home/jsr166/jsr166
package jsr166tests.loops;
/*
* Written by Doug Lea with assistance from members of JCP JSR-166
* Expert Group and released to the public domain, as explained at
* http://creativecommons.org/licenses/publicdomain
*/
// Adapted from bug report 5018354
import java.util.*;
public class LastKeyOfSubMap {
private static final Comparator NULL_AT_END = new Comparator() {
/**
* Allows for nulls. Null is greater than anything non-null.
*/
public int compare(Object pObj1, Object pObj2) {
if (pObj1 == null && pObj2 == null) return 0;
if (pObj1 == null && pObj2 != null) return 1;
if (pObj1 != null && pObj2 == null) return -1;
return ((Comparable) pObj1).compareTo(pObj2);
}
};
public static void main(String[] pArgs) {
SortedMap m1 = new TreeMap(NULL_AT_END);
m1.put("a", "a");
m1.put("b", "b");
m1.put("c", "c");
m1.put(null, "d");
SortedMap m2 = new TreeMap(m1);
System.out.println(m1.lastKey());
System.out.println(m1.get(m1.lastKey()));
Object m1lk = m1.remove(m1.lastKey());
if (m1lk == null)
throw new Error("bad remove of last key");
m2 = m2.tailMap("b");
System.out.println(m2.lastKey());
System.out.println(m2.get(m2.lastKey()));
Object m2lk = m2.remove(m2.lastKey());
if (m2lk == null)
throw new Error("bad remove of last key");
}
}