Pages

Tuesday, December 21, 2021

Java Array Sort Descending Order or Reverse Order

1. Overview

In this tutorial, We'll learn how to sort the arrays in revere order in java.
Sorting arrays is done with the help of Comparator interface which works very well for the custom objects.

Array of ints or any primitive/wrapper types  can be sorted in descending order using Arrays.sort() method.

Arrays.sort(T[], Collections.reverseOrder());
Arrays.sort(ints, Collections.reverseOrder());
Arrays.sort(stringArray, Collections.reverseOrder());
Arrays.sort(empArray, Collections.reverseOrder());

Let us write the few examples on arrays reverse order sorting.

Java Array Sort Descending Order



2. Java Int Array Sort Reverse Order


Let us create an Integer array with random values and sorting array in descending order using Arrays.sort() and Collections.reverseOrder() method.

Example

package com.javaprogramto.arrays.sort.reverse;

import java.util.Arrays;
import java.util.Collections;

public class ArraySortReverseInts {

	public static void main(String[] args) {

		Integer[] ints = new Integer[5];
		ints[0] = 20;
		ints[1] = 50;
		ints[2] = 40;
		ints[3] = 10;
		ints[4] = 30;

		System.out.println("Integer array before sort - " + Arrays.toString(ints));
		
		Arrays.sort(ints, Collections.reverseOrder());

		System.out.println("Integer array after sort - " + Arrays.toString(ints));

	}

}

Output
Integer array before sort - [20, 50, 40, 10, 30]
Integer array after sort - [50, 40, 30, 20, 10]


3. Java String Array Sort Reverse Order


Create first a String array with some strings and pass string array to Arrays.sort() method along with the reverse order comparator.

Example
package com.javaprogramto.arrays.sort.reverse;

import java.util.Arrays;
import java.util.Collections;

public class ArraySortReverseStrings {

	public static void main(String[] args) {

		String[] stringArray = new String[5];
		stringArray[0] = "G";
		stringArray[1] = "Z";
		stringArray[2] = "A";
		stringArray[3] = "N";
		stringArray[4] = "I";

		System.out.println("String array before sort - " + Arrays.toString(stringArray));
		Arrays.sort(stringArray, Collections.reverseOrder());

		System.out.println("String array after sort - " + Arrays.toString(stringArray));

	}

}

Output
String array before sort - [G, Z, A, N, I]
String array after sort - [Z, N, I, G, A]

4. Java Array Of Custom Objects Sort Reverse Order


Create an Employee class with id, name and date of join fields and then add few objects to the emp array.

Employee class implements comparable interface and then write the logic to sort by emp id in compareTo() method.

Note: When you want to use Collections.reverseOrder() then the custom class must implements Comparable interface. If the class implements Comparator then it throws ClassCastException.

Example

package com.javaprogramto.arrays.sort.reverse;

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

public class ArraySortReverseCustomObjects {

	public static void main(String[] args) {

		Employee[] empArray = new Employee[5];
		empArray[0] = new Employee(500, "A", "2000");
		empArray[1] = new Employee(300, "B", "2001");
		empArray[2] = new Employee(200, "C", "2002");
		empArray[3] = new Employee(400, "D", "2003");
		empArray[4] = new Employee(100, "E", "2004");

		System.out.println("Employee array before sort ");
		for (Employee e : empArray) {
			System.out.println(e);
		}
		Arrays.sort(empArray, Collections.reverseOrder());

		System.out.println("\n" + "Employee array after sort");
		for (Employee e : empArray) {
			System.out.println(e);
		}

	}
}

class Employee implements Comparable<Employee> {

	private int id;
	private String name;
	private String dateOfJoin;

	public Employee(int id, String name, String dateOfJoin) {
		super();
		this.id = id;
		this.name = name;
		this.dateOfJoin = dateOfJoin;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDateOfJoin() {
		return dateOfJoin;
	}

	public void setDateOfJoin(String dateOfJoin) {
		this.dateOfJoin = dateOfJoin;
	}

	@Override
	public String toString() {
		return "Employee [id=" + id + ", name=" + name + ", dateOfJoin=" + dateOfJoin + "]";
	}

	@Override
	public int compareTo(Employee o) {
		// TODO Auto-generated method stub
		return Integer.valueOf(this.getId()).compareTo(o.getId());
	}

}

Output
Employee array before sort 
Employee [id=500, name=A, dateOfJoin=2000]
Employee [id=300, name=B, dateOfJoin=2001]
Employee [id=200, name=C, dateOfJoin=2002]
Employee [id=400, name=D, dateOfJoin=2003]
Employee [id=100, name=E, dateOfJoin=2004]

Employee array after sort
Employee [id=500, name=A, dateOfJoin=2000]
Employee [id=400, name=D, dateOfJoin=2003]
Employee [id=300, name=B, dateOfJoin=2001]
Employee [id=200, name=C, dateOfJoin=2002]
Employee [id=100, name=E, dateOfJoin=2004]


5. Conclusion


In this article, we've seen how sort array in descending or reverse order in java.





No comments:

Post a Comment

Please do not add any spam links in the comments section.