import org.apache.commons.collections.comparators.ComparatorChain; 
 
import java.util.Arrays; 
import java.util.Comparator; 
 
public class ComparatorExampleForUserDefinedClass { 
  public static void main(String args[]) { 
    prepareData(); 
 
    ComparatorChain chain = new ComparatorChain(); 
    chain.addComparator(new NameComparator()); 
    chain.addComparator(new NumberComparator()); 
 
    printArray(dataArray); 
 
    Arrays.sort(dataArray, chain); 
 
    printArray(dataArray); 
  } 
 
  private static void prepareData() { 
    dataArray[0] = "S4"; 
    dataArray[1] = "Sa"; 
    dataArray[2] = "K"; 
    dataArray[3] = "K4"; 
    dataArray[4] = "W"; 
    dataArray[5] = "Sha"; 
    dataArray[6] = "War"; 
  } 
 
  private static void printArray(String[] array) { 
    System.err.println("---- Elements in Array ---- "); 
    for(int i = 0; i < array.length; i++) { 
      System.err.print(array[i] + ", "); 
    } 
    System.err.println(""); 
  } 
 
  private static String[] dataArray = new String[7]; 
} 
 
 
class NameComparator implements Comparator { 
  public int compare(Object o1, Object o2) { 
    if(o1 instanceof String && o2 instanceof String) { 
      String s1 = (String)o1; 
      String s2 = (String)o2; 
      s1 = s1.substring(0, s1.indexOf("-")); 
      s2 = s2.substring(0, s2.indexOf("-")); 
      return s1.compareTo(s2); 
    } 
    return 0; 
  } 
} 
 
class NumberComparator implements Comparator { 
  public int compare(Object o1, Object o2) { 
    if(o1 instanceof String && o2 instanceof String) { 
      String s1 = (String)o1; 
      String s2 = (String)o2; 
      Integer i1 = new Integer(s1.substring(s1.indexOf("-"), s1.length())); 
      Integer i2 = new Integer(s2.substring(s2.indexOf("-"), s2.length())); 
      return i1.compareTo(i2); 
    } 
    return 0; 
  } 
} 
            
       
  |