import java.util.*; public class NameSortedMap { static final Comparator NameOrdering = new Comparator() { public int compare(Name n1, Name n2) { int cmp = n1.firstName().compareTo(n2.firstName() ); return (cmp != 0 ? cmp : n1.lastName().compareTo(n2.lastName() )); } }; public static void main(String[] args) { SortedMap users = new TreeMap(NameOrdering); users.put(new Name("Bob", "Travolta"), new NameProperty("bob@travolta.com", "Gklavani 37, 1st floor") ); users.put(new Name("John", "Smith"), new NameProperty("john@smith.com", "Gklavani 37, 2nd floor") ); users.put(new Name("Karl", "Ng"), new NameProperty("karl@ng.com", "Gklavani 37, 3rd floor") ); users.put(new Name("Jeff", "Smith"), new NameProperty("jeff@smith.com", "Gklavani 37, 4th floor") ); users.put(new Name("Tom", "Rich"), new NameProperty("tom@rich.com", "Gklavani 37, 5tht floor") ); for(Map.Entry u: users.entrySet()) System.out.println(u); System.out.println("\n***Print headmap***"); SortedMap subusers = users.headMap(new Name("Karl", "Ng")); for(Map.Entry u: subusers.entrySet()) System.out.println(u); System.out.println("\n***Print tailmap***"); subusers = users.tailMap(new Name("Karl", "Ng")); for(Map.Entry u: subusers.entrySet()) System.out.println(u); } }