It has to do with the way the
String.compareTo() method has been implemented. Basically the natural order imposed by the compareTo() implementation is based on the Unicode value of the individual characters in the String. The unintuitive (non-alphabetical) ordering of the output of your code sample is simply the result of upper case characters preceeding lower case characters.
If you want take character case out of the equation when sorting the List, you could either make sure the List only contains lower case or upper case Strings, or sort the List using a Comparator implementation that makes use of the String.compareToIgnoreCase() method.
Edit: Must. Type. Faster.
[ December 02, 2008: Message edited by: Jelle Klap ]
Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.