Thursday, 20 April 2017

Sort array of object using custom Comparator ~ foundjava

Example:

Sort array of object using custom Comparator

import java.util.Arrays;
import java.util.Comparator;

public class SortComparator {
 
 final static int NUMBER_OF_OBJ = 5;
 
 public class MyClass {
  String name;
  int number;
  MyClass(String n, int i){
   name = n;
   number = i;
  }
 }

 public static void main(String[] args){
  System.out.println("Sort Comparator");
  
  SortComparator sortComparator = new SortComparator();
  
  MyClass[] myClassArray = new MyClass[NUMBER_OF_OBJ];

  myClassArray[0] = sortComparator.new MyClass("ABC", 9);
  myClassArray[1] = sortComparator.new MyClass("Eric", 6);
  myClassArray[2] = sortComparator.new MyClass("Java", 7);
  myClassArray[3] = sortComparator.new MyClass("Android", 199);
  myClassArray[4] = sortComparator.new MyClass("test", -3);
  showMyClass(myClassArray);
  
  Arrays.sort(myClassArray, comparatorName);
  System.out.println("\nmyClassArray sorted by name");
  showMyClass(myClassArray);
  
  Arrays.sort(myClassArray, comparatorNumber);
  System.out.println("\nmyClassArray sorted by number");
  showMyClass(myClassArray);
  
 }
 
 static Comparator<? super MyClass> comparatorName 
 = new Comparator<MyClass>(){
  public int compare(MyClass obj1, MyClass obj2) {
   return String.valueOf(obj1.name).compareTo(obj2.name); 
  }  
 };
 
 static Comparator<? super MyClass> comparatorNumber 
 = new Comparator<MyClass>(){
  public int compare(MyClass obj1, MyClass obj2) {
   return Integer.valueOf(obj1.number).compareTo(obj2.number); 
  }  
 };
 
 static void showMyClass(MyClass[] mc){
  for(int i = 0; i < mc.length; i++){
   System.out.println(mc[i].name 
     + " : " 
     + mc[i].number);
  }
 }
}

No comments:

Post a Comment