C2.java

import java.util.*;

/**
Play around with TreeSets and Comparators.
*/
class C2
{
    public static void main(String argv[])
    {
        TreeSet x = new TreeSet(new Comparator() {
            public int compare(Object a,Object b) {
                /*
                Sort on length, then lexicographically.
                */
                String aa = (String)a;
                String bb = (String)b;
                if (aa.length() == bb.length())
                    return aa.compareTo(bb);
                else
                    return aa.length() - bb.length();
                }
            });

        x.add("Tufted titmouse");
        x.add("White-breasted nuthatch");
        x.add("Red-breasted nuthatch");
        x.add("Downy woodpecker");
        x.add("Hairy woodpecker");
        x.add("Red-bellied woodpecker");
        x.add("Junco");
        x.add("House finch");
        x.add("House sparrow");
        x.add("Bluejay");
        x.add("Cardinal");
        x.add("Ruby-throated hummingbird");
        x.add("Sparrow");
        x.add("Carolina wren");
        x.add("Black-capped chickadee");
        x.add("Robin");
        x.add("Cowbird");
        x.add("Catbird");
        x.add("Mockingbird");
        x.add("Grackle");
        x.add("Crow");
        x.add("Red-winged blackbird");

        System.out.println("\nA 'sorted' list of birds:");
        Iterator y = x.iterator();
        while (y.hasNext()) {
            Object z = y.next();
            System.out.println("   " + z);
            }
    }
}