Java sort list Object by field
In this tutorial we will see how to sort an ArrayList of Objects by property using comparable and comparator interface. If you are looking for sorting a simple ArrayList of String or Integer then you can refer the following tutorials Show
We generally use Collections.sort() method to sort a simple array list. However if the ArrayList is ofcustom object type then in such case you have two options for sorting- comparable and comparator interfaces. Before going through the example of them, lets see whats the output when we try to sort arraylist of Objects without implementing any of these interfaces. Whats the need of comparable and comparator?Consider the below example I have a Student class which has properties like Student name, roll no and student age. And I want to have an ArrayList of Student Object. We do it like this import java.util.*; public class ArrayListSorting { public static void main(String args[]){ ArrayListI tried to call the Collections.sort() on the List of Objects and boom! I got the the error message like this Reason: I Just called the sort method on an ArrayList of Objects which actually doesnt work until unless we use interfaces like Comparable and Comparator. Now you must have understood the importance of these interfaces. Lets see how to use them to get the sorting done in our way. Sorting of ArrayListLets say we need to sort the ArrayList Now we can very well call Collections.sort on ArrayList Output: [ rollno=245, name=Rahul, age=24] [ rollno=223, name=Chaitanya, age=26] [ rollno=209, name=Ajeet, age=32]Comparable did our job why do we need Comparator anymore?
Sorting ArrayListWe are overriding compare method of Comparator for sorting. package beginnersbook.com; import java.util.Comparator; public class Student { private String studentname; private int rollno; private int studentage; public Student(int rollno, String studentname, int studentage) { this.rollno = rollno; this.studentname = studentname; this.studentage = studentage; } ... //Getter and setter methods same as the above examples ... /*Comparator for sorting the list by Student Name*/ public static ComparatorArrayList class: package beginnersbook.com; import java.util.*; public class Details { public static void main(String args[]){ ArrayListOutput: Student Name Sorting: [ rollno=505, name=Abey, age=24] [ rollno=809, name=Vignesh, age=32] [ rollno=101, name=Zues, age=26] RollNum Sorting: [ rollno=101, name=Zues, age=26] [ rollno=505, name=Abey, age=24] [ rollno=809, name=Vignesh, age=32] |