/** * @author Owen Astrachan * @version Sep 12, 2004 */ import java.util.*; public class ComparableStuff { private static class RevString implements Comparable{ private String myString; public RevString(String s){ myString = s; } public int compareTo(Object o){ RevString rs = (RevString) o; return rs.myString.compareTo(myString); } public String toString(){ return myString; } } private static class LengthComparator implements Comparator { public int compare(Object arg0, Object arg1) { String lhs = (String) arg0; String rhs = (String) arg1; int lengthDiff = lhs.length() - rhs.length(); if (lengthDiff == 0){ return lhs.compareTo(rhs); } return lengthDiff; } } public void printArray(Object[] list){ for(int k=0; k < list.length; k++){ System.out.print(list[k]+" "); } System.out.println(); } public static void main(String[] args){ String[] list = { "ape", "ant", "anteater", "cat", "dingo", "monkey", "mongoose", "lion", "leopard", "goat", "giraffe", "snake", "yak" }; RevString[] rlist = new RevString[list.length]; for(int k=0; k < rlist.length; k++){ rlist[k] = new RevString(list[k]); } ComparableStuff comp = new ComparableStuff(); System.out.println("\toriginal\n"); comp.printArray(list); Arrays.sort(list); comp.printArray(list); System.out.println("\n\treversed follows\n"); comp.printArray(rlist); Arrays.sort(rlist); comp.printArray(rlist); System.out.println("\n\tlength sorted\n"); Arrays.sort(list, new LengthComparator()); comp.printArray(list); System.out.println("\n\tshow split\n"); String fruit = "banana watermelon apple lemon mango orange"; String[] flist = fruit.split("\\s+"); comp.printArray(flist); Arrays.sort(flist); comp.printArray(flist); } }