Java Sort List (ArrayList) in Ascending and Descending Order using Java 8 Stream API

📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.

🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.

▶️ Subscribe to My YouTube Channel (176K+ subscribers): Java Guides on YouTube

▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube

In this tutorial, we will see how to sort List (ArrayList) in ascending and descending order using Java 8 Stream APIs.
Learn Stream API at https://www.javaguides.net/p/java-8-stream-api-tutorial.html.

Sort List of String objects in Ascending order using Java 8 Stream APIs

This example demonstrates different ways to sort List of String objects in Ascending order using Java 8 Stream APIs:
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class StreamListSorting { public static void main(String[] args) { List < String > fruits = new ArrayList < String > (); fruits.add("Banana"); fruits.add("Apple"); fruits.add("Mango"); fruits.add("Orange"); List < String > sortedList = fruits.stream().sorted(Comparator.naturalOrder()).collect(Collectors.toList()); System.out.println(sortedList); List < String > sortedList1 = fruits.stream().sorted((o1, o2) -> o1.compareTo(o2)).collect(Collectors.toList()); System.out.println(sortedList1); List < String > sortedList2 = fruits.stream().sorted().collect(Collectors.toList()); System.out.println(sortedList2); } }
Output:
[Apple, Banana, Mango, Orange] [Apple, Banana, Mango, Orange] [Apple, Banana, Mango, Orange]

Sort List of String objects in Descending order using Java 8 Stream APIs

This example demonstrates different ways to sort List of String objects in descending order using Java 8 Stream APIs:
import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class StreamListSorting { public static void main(String[] args) { List < String > fruits = new ArrayList < String > (); fruits.add("Banana"); fruits.add("Apple"); fruits.add("Mango"); fruits.add("Orange"); // descending order List < String > sortedList3 = fruits.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); System.out.println(sortedList3); List < String > sortedList4 = fruits.stream().sorted((o1, o2) -> o2.compareTo(o1)).collect(Collectors.toList()); System.out.println(sortedList4); } }
Output:
[Orange, Mango, Banana, Apple] [Orange, Mango, Banana, Apple]

Sort List of Employee objects in Ascending order using Java 8 Stream APIs

Let's first create an Employee model class:
package com.java.tutorials.sorting; public class Employee { private int id; private String name; private int age; private long salary; public Employee(int id, String name, int age, long salary) { super(); this.id = id; this.name = name; this.age = age; this.salary = salary; } 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } public long getSalary() { return salary; } public void setSalary(long salary) { this.salary = salary; } @Override public String toString() { return "Employee [id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + "]"; } }
This example demonstrates how to sort an Employee by salary in ascending order using Java 8 Stream APIs:
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class StreamListSorting { public static void main(String[] args) { // sort employee by salary in ascending order List < Employee > employees = new ArrayList < Employee > (); employees.add(new Employee(10, "Ramesh", 30, 400000)); employees.add(new Employee(20, "John", 29, 350000)); employees.add(new Employee(30, "Tom", 30, 450000)); employees.add(new Employee(40, "Pramod", 29, 500000)); List < Employee > employeesSortedList1 = employees.stream() .sorted((o1, o2) -> (int)(o1.getSalary() - o2.getSalary())).collect(Collectors.toList()); System.out.println(employeesSortedList1); List < Employee > employeesSortedList2 = employees.stream() .sorted(Comparator.comparingLong(Employee::getSalary)).collect(Collectors.toList()); //ascending order System.out.println(employeesSortedList2); } }
Output:
[Employee [id=20, name=John, age=29, salary=350000], Employee [id=10, name=Ramesh, age=30, salary=400000], Employee [id=30, name=Tom, age=30, salary=450000], Employee [id=40, name=Pramod, age=29, salary=500000]] [Employee [id=20, name=John, age=29, salary=350000], Employee [id=10, name=Ramesh, age=30, salary=400000], Employee [id=30, name=Tom, age=30, salary=450000], Employee [id=40, name=Pramod, age=29, salary=500000]]

Sort List of Employee objects in Descending order using Java 8 Stream APIs

This example demonstrates how to sort an Employee by salary in descending order using Java 8 Stream APIs:
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class StreamListSorting { public static void main(String[] args) { // sort employee by salary in ascending order List < Employee > employees = new ArrayList < Employee > (); employees.add(new Employee(10, "Ramesh", 30, 400000)); employees.add(new Employee(20, "John", 29, 350000)); employees.add(new Employee(30, "Tom", 30, 450000)); employees.add(new Employee(40, "Pramod", 29, 500000)); List < Employee > employeesSortedList1 = employees.stream() .sorted((o1, o2) -> (int)(o2.getSalary() - o1.getSalary())).collect(Collectors.toList()); System.out.println(employeesSortedList1); List < Employee > employeesSortedList2 = employees.stream() .sorted(Comparator.comparingLong(Employee::getSalary).reversed()).collect(Collectors.toList()); //ascending order System.out.println(employeesSortedList2); } }
Output:
[Employee [id=40, name=Pramod, age=29, salary=500000], Employee [id=30, name=Tom, age=30, salary=450000], Employee [id=10, name=Ramesh, age=30, salary=400000], Employee [id=20, name=John, age=29, salary=350000]] [Employee [id=40, name=Pramod, age=29, salary=500000], Employee [id=30, name=Tom, age=30, salary=450000], Employee [id=10, name=Ramesh, age=30, salary=400000], Employee [id=20, name=John, age=29, salary=350000]]

Related Java 8 Tutorials


Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare