ArrayList Object(comparable and Comparator)

In the previous tutorial we studied Array list sort ,now we will study compare Arraylist .

See Example:

public class Student {

    private String studentName;
    private int rollNo;
    private int studenTage;
 
public Student(int rollNo) {
super();
this.rollNo= rollNo;
}

public Student(int rollNo,String studentName, int studenTage) {
super();
this.studentName= studentName;
this.rollNo= rollNo;
this.studenTage= studenTage;
}

public Student(String studentName, int studenTage) {
super();
this.studentName= studentName;
this.studenTage= studenTage;
}

public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public int getStudenTage() {
return studenTage;
}
public void setStudenTage(int studenTage) {
this.studenTage = studenTage;
}
@Override
public String toString() {
return "Student [rollNo=" + rollNo + "]";
}

}

- we Just called the sort method on an ArrayList of Objects which actually doesn’t work until unless we use interfaces like Comparable andComparator.
Now you must have understood the importance of these interfaces. Let’s see how to use them to get the sorting done in our way.

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import ArrayListBasic.Student;

public class Detail {

public static void main(String[] args) {

ArrayList<Student> arraylist = new ArrayList<Student>();
  arraylist.add(new Student(007, "Item7", 107));
  arraylist.add(new Student(006, "Item6", 126));
  arraylist.add(new Student(001, "Item1", 121));
  arraylist.add(new Student(005, "Item5", 125));
  arraylist.add(new Student(003, "Item3", 103));
  arraylist.add(new Student(002, "Item2", 122));
  System.out.println("Arraylist Object1  : ");
  // Collections.sort(arraylist); //error
  // if you try to run this statement it will error
  // because he generic method sort(List<T>) of type Collections is not applicable 
  // for the arguments (ArrayList<Student>). The inferred type Student is not a valid     substitute
  // for the bounded parameter <T extends Comparable<? super T>>

  for(Student student : arraylist){
  System.out.println(student);
  }
 // System.out.println("Sort Arraylist Object  : ");
  System.out.println("Sort Arraylist Object2 Comparator  : ");
//Comparable ArrayList Object
  Collections.sort(arraylist, new Comparator<Student>() {
   @Override
public int compare(Student student1, Student student2) {
return student1.getStudentName().compareTo(student2.getStudentName());
}
  });
  for(Student student : arraylist){
  System.out.println(student);
  }   
}


}

//result 
Arraylist Object1  : 
Student [rollNo=7]
Student [rollNo=6]
Student [rollNo=1]
Student [rollNo=5]
Student [rollNo=3]
Student [rollNo=2]
Sort Arraylist Object2 Comparator  : 
Student [rollNo=1]
Student [rollNo=2]
Student [rollNo=3]
Student [rollNo=5]
Student [rollNo=6]
Student [rollNo=7]





EmoticonEmoticon