Java 8 sort list by date ascending

In this tutorial, we will see how to sort List [ArrayList] in ascending and descending order using Java Lambda expressions.
Let's start with the basics and traditional ways of sorting List [ArrayList] in ascending and descending.
Learn Java Lambda at//www.javaguides.net/2018/07/java-8-lambda-expressions.html.

Sort List of integers using Collections.sort[] method

import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SortList { public static void main[String[] args] { // create list List list = new ArrayList < Integer > []; list.add[10]; list.add[30]; list.add[20]; list.add[50]; list.add[40]; Collections.sort[list]; // ascending order System.out.println[list]; Collections.reverse[list]; // descending order System.out.println[list]; } }
Output:
[10, 20, 30, 40, 50] [50, 40, 30, 20, 10]

Sort List of Employee Objects in Ascending and Descending Order using Comparator

Let's create an Employee model with the following fields:
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 + "]"; } }
Now, let's create a class MySort which implements Comparator interface and provide logic to sort Employee by salary:
class MySort implements Comparator < Employee > { @Override public int compare[Employee o1, Employee o2] { return [int][o1.getSalary[] - o2.getSalary[]]; } }
Now, let's see how to sort an Employee by salary using Collections.sort[] method in ascending order:
package com.java.tutorials.sorting; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class SortList { public static void main[String[] args] { List employees = new ArrayList < Employee > []; employees.add[new Employee[10, "Ramesh", 30, 400000]]; employees.add[new Employee[20, "Santosh", 29, 350000]]; employees.add[new Employee[30, "Sanjay", 30, 450000]]; employees.add[new Employee[40, "Pramod", 29, 500000]]; // ascending order Collections.sort[employees, new MySort[]]; System.out.println[employees]; } }
Output:
[Employee [id=20, name=Santosh, age=29, salary=350000], Employee [id=10, name=Ramesh, age=30, salary=400000], Employee [id=30, name=Sanjay, age=30, salary=450000], Employee [id=40, name=Pramod, age=29, salary=500000]]
On order to sort Employee by their salary in descending order, we need to change MySort class with the following changes:
class MySort implements Comparator < Employee > { @Override public int compare[Employee o1, Employee o2] { return [int][o2.getSalary[] - o1.getSalary[]]; } }
Note that we have done a single line of change to sort Employee by their salary in descending order.
return [int][o2.getSalary[] - o1.getSalary[]];

Sort List of Employee Objects in Ascending and Descending Order using Lambda Expressions

In this example, we will see how to sort a list of employees by name in ascending and descending order using Lambda Expressions:
package com.java.tutorials.sorting; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class SortList { public static void main[String[] args] { List employees = new ArrayList < Employee > []; employees.add[new Employee[10, "Ramesh", 30, 400000]]; employees.add[new Employee[20, "Santosh", 29, 350000]]; employees.add[new Employee[30, "Sanjay", 30, 450000]]; employees.add[new Employee[40, "Pramod", 29, 500000]]; Collections.sort[employees, new Comparator < Employee > [] { @Override public int compare[Employee o1, Employee o2] { return [int][o1.getName[].compareTo[o2.getName[]]]; } }]; // using lambda expression // ascending order Collections.sort[employees, [o1, o2] -> [o1.getName[].compareTo[o2.getName[]]]]; System.out.println["Ascending order => " + employees]; // descending order Collections.sort[employees, [o1, o2] -> [o2.getName[].compareTo[o1.getName[]]]]; System.out.println["Descending order => " + employees]; // using Comparator.comparing[] method Collections.sort[employees, Comparator.comparing[Employee::getName]]; } } class MySort implements Comparator < Employee > { @Override public int compare[Employee o1, Employee o2] { return [int][o1.getSalary[] - o2.getSalary[]]; } }
Note that the lambda expression we used to sort List of employees:
// using lambda expression // ascending order Collections.sort[employees, [o1, o2] -> [o1.getName[].compareTo[o2.getName[]]]]; System.out.println["Ascending order => " + employees]; // descending order Collections.sort[employees, [o1, o2] -> [o2.getName[].compareTo[o1.getName[]]]]; System.out.println["Descending order => " + employees];
Output:
Ascending order => [Employee [id=40, name=Pramod, age=29, salary=500000], Employee [id=10, name=Ramesh, age=30, salary=400000], Employee [id=30, name=Sanjay, age=30, salary=450000], Employee [id=20, name=Santosh, age=29, salary=350000]] Descending order => [Employee [id=20, name=Santosh, age=29, salary=350000], Employee [id=30, name=Sanjay, age=30, salary=450000], Employee [id=10, name=Ramesh, age=30, salary=400000], Employee [id=40, name=Pramod, age=29, salary=500000]]

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
Java 8 Sorting Algorithms

Free Spring Boot Tutorial - 5 Hours Full Course

Watch this course on YouTube at Spring Boot Tutorial | Fee 5 Hours Full Course

Video liên quan

Chủ Đề