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.
Table of contents
- Sort List of String objects in Ascending order using Java 8 Stream APIs
- Sort List of String objects in Descending order using Java 8 Stream APIs
- Sort List of Employee objects in Ascending order using Java 8 Stream APIs
- Sort List of Employee objects in Descending order using Java 8 Stream APIs
1. Sort the 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]
2. Sort the 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]
3. Sort the 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]]
4. Sort the 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
- Java 8 Lambda Expressions
- Java 8 Functional Interfaces
- Java 8 Method References
- Java 8 Stream API
- Java 8 Optional Class
- Java 8 Collectors Class
- Java 8 StringJoiner Class
- Java 8 Static and Default Methods in Interface
- Factory Pattern Using Java 8 Lambda Expressions
- Java 8 - Merging Two Maps Example
- Java 8 Convert List to Map Example
- Guide to Java 8 forEach Method
- Handle NullPointerException using Java 8 Optional Class
- How to Use Java 8 Stream API in Java Projects
Comments
Post a Comment
Leave Comment