Friday, April 10, 2015

[Java][Example] Sorting with Comparable and Comparator

Text in pink is for using Comparable to sort object and text in blue is for using Comparator to sort object:

Example.java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;

class Example{
   public static void main(String[] args){
       //sort int []
       int[] iList = new int[]{5,2,4,1,3};
       Arrays.sort(iList);
       System.out.println(Arrays.toString(iList));
      
       //sort String[]
       String[] sList = new String[]{"John","May","Ann","Emila","Bonny"};
       Arrays.sort(sList);
       System.out.println(Arrays.toString(sList));
      
       //sort ArrayList
       ArrayList<String> sArrList = new ArrayList<>();
       sArrList.add("Tree");
       sArrList.add("Bee");
       sArrList.add("Human");
       sArrList.add("Flower");
       Collections.sort(sArrList);
       System.out.print("[");
       for(String item:sArrList) System.out.print(item+",");
       System.out.println("]");
      
       //sort Object by comparable
       Student[] sOList = new Student[]{
           new Student(999),new Student(120),new Student(521)
       };
       Arrays.sort(sOList);
       System.out.println(Arrays.toString(sOList));
      
       //sort Object by comparator
       Teacher[] tOList = new Teacher[]{
           new Teacher(12,20000),
           new Teacher(22,15000),
           new Teacher(5,30000)
       };
       Arrays.sort(tOList,IdComparator);
       System.out.println(Arrays.toString(tOList));
       Arrays.sort(tOList,SalaryComparator);
       System.out.println(Arrays.toString(tOList));
   }
  
   static Comparator<Teacher> IdComparator = new Comparator<Teacher>(){
       @Override
       public int compare(Teacher t1,Teacher t2){
           return (int) (t1.getId() - t2.getId());
       }
   };
  
   static Comparator<Teacher> SalaryComparator = new Comparator<Teacher>(){
       @Override
       public int compare(Teacher t1,Teacher t2){
           return (int)(t1.getSalary()-t2.getSalary());
       }
   };

  
}

class Teacher{
    private int id;
    private int salary;
    Teacher(int id, int salary){
        this.id = id;
        this.salary = salary;
    }
    public int getId(){
        return id;
    }
    public int getSalary(){
        return salary;
    }
    @Override
    public String toString(){
        return "Teacher:"+Integer.toString(id)+":"+Integer.toString(salary)+",";
    }
}

class Student implements Comparable<Student>{
    private int id;
    Student(int id){
        this.id = id;
    }
    public int getId(){
        return id;
    }
    @Override
    public String toString(){
        return "Student:"+Integer.toString(id)+",";
    }
    @Override
    public int compareTo(Student s){
        return this.id - s.id;
    }

}

Result

[1, 2, 3, 4, 5]
[Ann, Bonny, Emila, John, May]
[Bee,Flower,Human,Tree,]
[Student:120,, Student:521,, Student:999,]
[Teacher:5:30000,, Teacher:12:20000,, Teacher:22:15000,]
[Teacher:22:15000,, Teacher:12:20000,, Teacher:5:30000,]

No comments :

Post a Comment