The most popular questions in java how to sort an ArrayList in java. The sorting of ArrayList objects totally depends on Comparable or Comparator. In this post, we will see the sorting an ArrayList. To sort an ArrayList we have two ways:
Suppose we have an ArrayList that stores some String objects. To sort the ArrayList, We need to provide the reference of the Comparator object. If you are a beginner then read the Comparator interface first. The sort(Comparator c) method, sorts the Strings alphabetically in ascending order).
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public voidsort(Comparator<E> c)
public void sort(Comparator<E> c)
public void sort(Comparator<E> c)
void, This method doesn’t return anything because it’s return type is void. c, Object of comparator
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import java.util.ArrayList;
import java.util.Comparator;
public class ArrayListExample
{
public static voidmain(String[] args)
{
ArrayList<String> listOfNames = new ArrayList<String>();
public int compare(String string1, String string2)
{
return string1.compareTo(string2);
}
}
import java.util.ArrayList;
import java.util.Comparator;
public class ArrayListExample
{
public static void main(String[] args)
{
ArrayList<String> listOfNames = new ArrayList<String>();
listOfNames.add("D");
listOfNames.add("A");
listOfNames.add("Z");
listOfNames.add("Y");
listOfNames.add("X");
System.out.println("Before sorting: "+ listOfNames);
listOfNames.sort(new MyComparator());
System.out.println("After sorting: "+ listOfNames);
}
}
class MyComparator implements Comparator<String>
{
public int compare(String string1, String string2)
{
return string1.compareTo(string2);
}
}
import java.util.ArrayList;
import java.util.Comparator;
public class ArrayListExample
{
public static void main(String[] args)
{
ArrayList<String> listOfNames = new ArrayList<String>();
listOfNames.add("D");
listOfNames.add("A");
listOfNames.add("Z");
listOfNames.add("Y");
listOfNames.add("X");
System.out.println("Before sorting: "+ listOfNames);
listOfNames.sort(new MyComparator());
System.out.println("After sorting: "+ listOfNames);
}
}
class MyComparator implements Comparator<String>
{
public int compare(String string1, String string2)
{
return string1.compareTo(string2);
}
}
Output: Before sorting: [D, A, Z, Y, X] After sorting: [A, D, X, Y, Z]
Sorting of ArrayList contains User-defined class objects
Suppose we have an ArrayList of Student’s object and we want to sort the ArrayList on based of different criteria. Let’s see java sort ArrayList of objects
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import java.util.ArrayList;
import java.util.Comparator;
class Student
{
int rollNo;
String name;
int age;
Student(int rollno,String name,int age)
{
this.rollNo=rollno;
this.name=name;
this.age=age;
}
}
class AgeComparator implements Comparator<Student>
{
@Override
public int compare(Student student1, Student student2)
{
if(student1.age==student2.age)
return0;
elseif(student1.age>student2.age)
return1;
else
return-1;
}
}
class RollNoComparator implements Comparator<Student>
{
@Override
public int compare(Student student1, Student student2)
{
if(student1.rollNo==student2.rollNo)
return0;
elseif(student1.rollNo>student2.rollNo)
return1;
else
return-1;
}
}
public class ArrayListExample
{
public static voidmain(String args[])
{
ArrayList<Student> listOfStudent = new ArrayList<Student>();
listOfStudent.add(newStudent(1,"Ravi",26));
listOfStudent.add(newStudent(2,"kant",27));
listOfStudent.add(newStudent(3,"kamboj",20));
// It Sorts all the objects based on Age
listOfStudent.sort(newAgeComparator());
System.out.println("Sorting based on Age:");
for(Student student:listOfStudent)
{
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
// It Sorts all the objects based on RollNo
listOfStudent.sort(newRollNoComparator());
System.out.println("Sorting based on RollNo:");
for(Student student:listOfStudent)
{
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
}
}
import java.util.ArrayList;
import java.util.Comparator;
class Student
{
int rollNo;
String name;
int age;
Student(int rollno,String name,int age)
{
this.rollNo=rollno;
this.name=name;
this.age=age;
}
}
class AgeComparator implements Comparator<Student>
{
@Override
public int compare(Student student1, Student student2)
{
if(student1.age==student2.age)
return 0;
else if(student1.age>student2.age)
return 1;
else
return -1;
}
}
class RollNoComparator implements Comparator<Student>
{
@Override
public int compare(Student student1, Student student2)
{
if(student1.rollNo==student2.rollNo)
return 0;
else if(student1.rollNo>student2.rollNo)
return 1;
else
return -1;
}
}
public class ArrayListExample
{
public static void main(String args[])
{
ArrayList<Student> listOfStudent = new ArrayList<Student>();
listOfStudent.add(new Student(1,"Ravi",26));
listOfStudent.add(new Student(2,"kant",27));
listOfStudent.add(new Student(3,"kamboj",20));
// It Sorts all the objects based on Age
listOfStudent.sort(new AgeComparator());
System.out.println("Sorting based on Age:");
for(Student student:listOfStudent)
{
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
// It Sorts all the objects based on RollNo
listOfStudent.sort(new RollNoComparator());
System.out.println("Sorting based on RollNo:");
for(Student student:listOfStudent)
{
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
}
}
import java.util.ArrayList;
import java.util.Comparator;
class Student
{
int rollNo;
String name;
int age;
Student(int rollno,String name,int age)
{
this.rollNo=rollno;
this.name=name;
this.age=age;
}
}
class AgeComparator implements Comparator<Student>
{
@Override
public int compare(Student student1, Student student2)
{
if(student1.age==student2.age)
return 0;
else if(student1.age>student2.age)
return 1;
else
return -1;
}
}
class RollNoComparator implements Comparator<Student>
{
@Override
public int compare(Student student1, Student student2)
{
if(student1.rollNo==student2.rollNo)
return 0;
else if(student1.rollNo>student2.rollNo)
return 1;
else
return -1;
}
}
public class ArrayListExample
{
public static void main(String args[])
{
ArrayList<Student> listOfStudent = new ArrayList<Student>();
listOfStudent.add(new Student(1,"Ravi",26));
listOfStudent.add(new Student(2,"kant",27));
listOfStudent.add(new Student(3,"kamboj",20));
// It Sorts all the objects based on Age
listOfStudent.sort(new AgeComparator());
System.out.println("Sorting based on Age:");
for(Student student:listOfStudent)
{
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
// It Sorts all the objects based on RollNo
listOfStudent.sort(new RollNoComparator());
System.out.println("Sorting based on RollNo:");
for(Student student:listOfStudent)
{
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
}
}
Output: Sorting based on Age: RollNo of Student = 3 Age of Student = 20 Name of Student = kamboj RollNo of Student = 1 Age of Student = 26 Name of Student = Ravi RollNo of Student = 2 Age of Student = 27 Name of Student = kant Sorting based on RollNo: RollNo of Student = 1 Age of Student = 26 Name of Student = Ravi RollNo of Student = 2 Age of Student = 27 Name of Student = kant RollNo of Student = 3 Age of Student = 20 Name of Student = kamboj
Collections.sort(Comparator c)
By use of Collections.sort(Comparator c) we can sort the ArrayList. Suppose we have an ArrayList of String we can sort it by Collections.sort() method.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class ArrayListExample
{
public static voidmain(String[] args)
{
ArrayList<String> listOfNames = new ArrayList<String>();
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class Student
{
int rollNo;
String name;
int age;
Student(int rollno,String name,int age)
{
this.rollNo=rollno;
this.name=name;
this.age=age;
}
}
class AgeComparator implements Comparator<Student>
{
@Override
public int compare(Student student1, Student student2)
{
if(student1.age==student2.age)
return 0;
else if(student1.age>student2.age)
return 1;
else
return -1;
}
}
class RollNoComparator implements Comparator<Student>
{
@Override
public int compare(Student student1, Student student2)
{
if(student1.rollNo==student2.rollNo)
return 0;
else if(student1.rollNo>student2.rollNo)
return 1;
else
return -1;
}
}
public class ExampleOfComparable
{
public static void main(String args[])
{
ArrayList<Student> listOfStudent = new ArrayList<Student>();
listOfStudent.add(new Student(1,"Ravi",26));
listOfStudent.add(new Student(2,"kant",27));
listOfStudent.add(new Student(3,"kamboj",20));
// It Sorts all the objects based on Age
Collections.sort(listOfStudent, new AgeComparator());
for(Student student:listOfStudent)
{
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
// It Sorts all the objects based on RollNo
Collections.sort(listOfStudent, new RollNoComparator());
for(Student student:listOfStudent)
{
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class Student
{
int rollNo;
String name;
int age;
Student(int rollno,String name,int age)
{
this.rollNo=rollno;
this.name=name;
this.age=age;
}
}
class AgeComparator implements Comparator<Student>
{
@Override
public int compare(Student student1, Student student2)
{
if(student1.age==student2.age)
return 0;
else if(student1.age>student2.age)
return 1;
else
return -1;
}
}
class RollNoComparator implements Comparator<Student>
{
@Override
public int compare(Student student1, Student student2)
{
if(student1.rollNo==student2.rollNo)
return 0;
else if(student1.rollNo>student2.rollNo)
return 1;
else
return -1;
}
}
public class ExampleOfComparable
{
public static void main(String args[])
{
ArrayList<Student> listOfStudent = new ArrayList<Student>();
listOfStudent.add(new Student(1,"Ravi",26));
listOfStudent.add(new Student(2,"kant",27));
listOfStudent.add(new Student(3,"kamboj",20));
// It Sorts all the objects based on Age
Collections.sort(listOfStudent, new AgeComparator());
for(Student student:listOfStudent)
{
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
// It Sorts all the objects based on RollNo
Collections.sort(listOfStudent, new RollNoComparator());
for(Student student:listOfStudent)
{
System.out.println("RollNo of Student = "+student.rollNo);
System.out.println("Age of Student = "+student.age);
System.out.println("Name of Student = "+student.name);
}
}
}
Output: RollNo of Student = 3 Age of Student = 20 Name of Student = kamboj RollNo of Student = 1 Age of Student = 26 Name of Student = Ravi RollNo of Student = 2 Age of Student = 27 Name of Student = kant RollNo of Student = 1 Age of Student = 26 Name of Student = Ravi RollNo of Student = 2 Age of Student = 27 Name of Student = kant RollNo of Student = 3 Age of Student = 20 Name of Student = kamboj