Is ArrayList an object in Java?
Show 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 – We generally use Collections.sort() method to sort a simple array list. However if the ArrayList is of custom object type then in such case you have two options for sorting- comparable and comparator interfaces. Before going through the example of them, let’s see what’s the output when we try to sort arraylist of Objects without implementing any of these interfaces. What’s 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. 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; } 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; } }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 – Exception in thread “main” java.lang.Error: Unresolved compilation problem: Bound mismatch: The generic method sort(List) of type Collections is not applicable for the arguments (ArrayList). The inferred type Student is not a valid substitute for the bounded parameter > at beginnersbook.com.Details.main(Details.java:11) Reason: I Just called the sort method on an ArrayList of Objects which actually doesn’t work until unless we use interfaces like Comparable and Comparator. 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. Sorting of ArrayListLet’s say we need to sort the ArrayList Now we can very well call Collections.sort on ArrayList import java.util.*; public class ArrayListSorting { public static void main(String args[]){ ArrayListOutput: [ 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]
Submit a bug or feature |