Sort time in java

Sort List by LocalDateTime in 4 ways:

We have Product class with 4 member variables, its setters & getters, 4-arg parameterized constructor and overriding toString() method for pretty print. We will sort List of Products on the basis of java.time.LocalDateTime in ascending and descending order in 4 different ways as mentioned above.

Product.java

package in.bench.resources.localdatetime.sorting; import java.time.LocalDateTime; public class Product < // member variables private int prodId; private String prodName; private LocalDateTime prodCreatedDate; private double prodRate; // getters and setters // 4-arg parameterized constructor // override toString() method @Override public String toString() < return "Product [prodId=" + prodId + ", prodCreatedDate=" + prodCreatedDate + ", prodRate=" + prodRate + ", prodName=" + prodName + "]"; >>

1. Sort List by LocalDateTime using java.util.Comparator :

  • There is a list of Products and we will be sorting product list by LocalDateTime in ascending and descending order using java.util.Comparator interface
  • For sorting,
    • We will create separate class implementing java.util.Comparator interface and overriding compare() method for ascending-order sorting
    • For descending-order sorting, we will reverse the Comparator using reversed() method

    ProductSortingComparator.java

    package in.bench.resources.localdatetime.sorting; import java.util.Comparator; public class ProductSortingComparator implements Comparator  < @Override public int compare(Product prod1, Product prod2) < return prod1.getProdCreatedDate().compareTo(prod2.getProdCreatedDate()); >>

    ProductLocalDateTimeSortingUsingComparator.java

    package in.bench.resources.localdatetime.sorting; import java.text.ParseException; import java.time.LocalDateTime; import java.time.Month; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ProductLocalDateTimeSortingUsingComparator < public static void main(String[] args) throws ParseException < // 1. products Product product1 = new Product(1, "Cooker", LocalDateTime.of(2022, Month.MAY, 31, 12, 35, 59), 13750.0); Product product2 = new Product(2, "Sofa-Bed", LocalDateTime.of(2022, Month.MAY, 31, 11, 49, 53), 11750.0); Product product3 = new Product(3, "Fridge", LocalDateTime.of(2022, Month.JUNE, 18, 5, 30, 49), 12750.0); Product product4 = new Product(4, "Cupboard", LocalDateTime.of(2022, Month.JUNE, 18, 4, 45, 37), 11525.0); Product product5 = new Product(5, "Utensils", LocalDateTime.of(2022, Month.JANUARY, 10, 12, 45, 01), 17050.0); // 1.1 List of Products Listproducts = new ArrayList(); products.add(product1); products.add(product2); products.add(product3); products.add(product4); products.add(product5); // 1.2 print to console System.out.println("Before sorting :- \n"); for(Product prod : products) < System.out.println(prod); >// 2. Ascending-order sorting Collections.sort(products, new ProductSortingComparator()); // 2.1 print to console - ascending order System.out.println("\n\nAscending-order sorting on the basis of LocalDateTime :- \n"); for(Product prod : products) < System.out.println(prod); >// 3. Descending-order sorting Collections.sort(products, (new ProductSortingComparator()).reversed()); // 3.1 print to console - descending order System.out.println("\n\nDescending-order sorting on the basis of LocalDateTime :- \n"); for(Product prod : products) < System.out.println(prod); >> >
    Before sorting :- Product [prodId=1, prodCreatedDate=2022-05-31T12:35:59, prodRate=13750.0, prodName=Cooker] Product [prodId=2, prodCreatedDate=2022-05-31T11:49:53, prodRate=11750.0, prodName=Sofa-Bed] Product [prodId=3, prodCreatedDate=2022-06-18T05:30:49, prodRate=12750.0, prodName=Fridge] Product [prodId=4, prodCreatedDate=2022-06-18T04:45:37, prodRate=11525.0, prodName=Cupboard] Product [prodId=5, prodCreatedDate=2022-01-10T12:45:01, prodRate=17050.0, prodName=Utensils] Ascending-order sorting on the basis of LocalDateTime :- Product [prodId=5, prodCreatedDate=2022-01-10T12:45:01, prodRate=17050.0, prodName=Utensils] Product [prodId=2, prodCreatedDate=2022-05-31T11:49:53, prodRate=11750.0, prodName=Sofa-Bed] Product [prodId=1, prodCreatedDate=2022-05-31T12:35:59, prodRate=13750.0, prodName=Cooker] Product [prodId=4, prodCreatedDate=2022-06-18T04:45:37, prodRate=11525.0, prodName=Cupboard] Product [prodId=3, prodCreatedDate=2022-06-18T05:30:49, prodRate=12750.0, prodName=Fridge] Descending-order sorting on the basis of LocalDateTime :- Product [prodId=3, prodCreatedDate=2022-06-18T05:30:49, prodRate=12750.0, prodName=Fridge] Product [prodId=4, prodCreatedDate=2022-06-18T04:45:37, prodRate=11525.0, prodName=Cupboard] Product [prodId=1, prodCreatedDate=2022-05-31T12:35:59, prodRate=13750.0, prodName=Cooker] Product [prodId=2, prodCreatedDate=2022-05-31T11:49:53, prodRate=11750.0, prodName=Sofa-Bed] Product [prodId=5, prodCreatedDate=2022-01-10T12:45:01, prodRate=17050.0, prodName=Utensils]

    2. Sort List by LocalDateTime using Lambda Expression :

    • There is a list of Products and we will be sorting product list by LocalDateTime in ascending and descending order using Lambda Expression
    • For sorting, we will write/code lambda expression to sort list of product on the basis of product created date which will return Comparator
      • For ascending-order sorting, we will pass actual list and Comparator to Collections.sort() method
      • For descending-order sorting, we will reverse the Comparator using reversed() method of Comparator and pass actual list and reversed Comparator to Collections.sort() method

      ProductLocalDateTimeSortingUsingLambdaExpression.java

      package in.bench.resources.localdatetime.sorting; import java.text.ParseException; import java.time.LocalDateTime; import java.time.Month; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class ProductLocalDateTimeSortingUsingLambdaExpression < public static void main(String[] args) throws ParseException < // 1. products Product product1 = new Product(1, "Cooker", LocalDateTime.of(2022, Month.MAY, 31, 12, 35, 59), 13750.0); Product product2 = new Product(2, "Sofa-Bed", LocalDateTime.of(2022, Month.MAY, 31, 11, 49, 53), 11750.0); Product product3 = new Product(3, "Fridge", LocalDateTime.of(2022, Month.JUNE, 18, 5, 30, 49), 12750.0); Product product4 = new Product(4, "Cupboard", LocalDateTime.of(2022, Month.JUNE, 18, 4, 45, 37), 11525.0); Product product5 = new Product(5, "Utensils", LocalDateTime.of(2022, Month.JANUARY, 10, 12, 45, 01), 17050.0); // 1.1 List Listproducts = new ArrayList(); products.add(product1); products.add(product2); products.add(product3); products.add(product4); products.add(product5); // 1.2 print to console System.out.println("Before sorting :- \n"); products.forEach(prod -> System.out.println(prod)); // 2. get Comparator using Lambda expression Comparator comparatorAsc = (prod1, prod2) -> prod1.getProdCreatedDate() .compareTo(prod2.getProdCreatedDate()); // 2.1 pass above Comparator and sort in ascending order Collections.sort(products, comparatorAsc); // 2.2 print to console System.out.println("\n\nAscending-order sorting on the basis of LocalDateTime :- \n"); products.forEach(prod -> System.out.println(prod)); // 3. get Comparator using Lambda expression Comparator comparatorDesc = (prod1, prod2) -> prod2.getProdCreatedDate() .compareTo(prod1.getProdCreatedDate()); // 3.1 pass above Comparator and sort in descending order Collections.sort(products, comparatorDesc); // 3.2 print to console - descending order System.out.println("\n\nDescending-order sorting on the basis of LocalDateTime :- \n"); products.forEach(prod -> System.out.println(prod)); > >
      Before sorting :- Product [prodId=1, prodCreatedDate=2022-05-31T12:35:59, prodRate=13750.0, prodName=Cooker] Product [prodId=2, prodCreatedDate=2022-05-31T11:49:53, prodRate=11750.0, prodName=Sofa-Bed] Product [prodId=3, prodCreatedDate=2022-06-18T05:30:49, prodRate=12750.0, prodName=Fridge] Product [prodId=4, prodCreatedDate=2022-06-18T04:45:37, prodRate=11525.0, prodName=Cupboard] Product [prodId=5, prodCreatedDate=2022-01-10T12:45:01, prodRate=17050.0, prodName=Utensils] Ascending-order sorting on the basis of LocalDateTime :- Product [prodId=5, prodCreatedDate=2022-01-10T12:45:01, prodRate=17050.0, prodName=Utensils] Product [prodId=2, prodCreatedDate=2022-05-31T11:49:53, prodRate=11750.0, prodName=Sofa-Bed] Product [prodId=1, prodCreatedDate=2022-05-31T12:35:59, prodRate=13750.0, prodName=Cooker] Product [prodId=4, prodCreatedDate=2022-06-18T04:45:37, prodRate=11525.0, prodName=Cupboard] Product [prodId=3, prodCreatedDate=2022-06-18T05:30:49, prodRate=12750.0, prodName=Fridge] Descending-order sorting on the basis of LocalDateTime :- Product [prodId=3, prodCreatedDate=2022-06-18T05:30:49, prodRate=12750.0, prodName=Fridge] Product [prodId=4, prodCreatedDate=2022-06-18T04:45:37, prodRate=11525.0, prodName=Cupboard] Product [prodId=1, prodCreatedDate=2022-05-31T12:35:59, prodRate=13750.0, prodName=Cooker] Product [prodId=2, prodCreatedDate=2022-05-31T11:49:53, prodRate=11750.0, prodName=Sofa-Bed] Product [prodId=5, prodCreatedDate=2022-01-10T12:45:01, prodRate=17050.0, prodName=Utensils]

      3. Sort List by LocalDateTime using Method References :

      • There is a list of Products and we will be sorting product list by LocalDateTime in ascending and descending order using Method References
      • For sorting, create a Comparator by passing Method References to Comparator.comparing() method
        • For ascending-order sorting, pass above created Comparator to List.sort() method as argument
        • For descending-order sorting, we will reverse the Comparator using reversed() method of Comparator and pass reversed Comparator to List.sort() method as argument

        ProductLocalDateTimeSortingUsingMethodReferences.java

        package in.bench.resources.localdatetime.sorting; import java.text.ParseException; import java.time.LocalDateTime; import java.time.Month; import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class ProductLocalDateTimeSortingUsingMethodReferences < public static void main(String[] args) throws ParseException < // 1. products Product product1 = new Product(1, "Cooker", LocalDateTime.of(2022, Month.MAY, 31, 12, 35, 59), 13750.0); Product product2 = new Product(2, "Sofa-Bed", LocalDateTime.of(2022, Month.MAY, 31, 11, 49, 53), 11750.0); Product product3 = new Product(3, "Fridge", LocalDateTime.of(2022, Month.JUNE, 18, 5, 30, 49), 12750.0); Product product4 = new Product(4, "Cupboard", LocalDateTime.of(2022, Month.JUNE, 18, 4, 45, 37), 11525.0); Product product5 = new Product(5, "Utensils", LocalDateTime.of(2022, Month.JANUARY, 10, 12, 45, 01), 17050.0); // 1.1 List Listproducts = new ArrayList(); products.add(product1); products.add(product2); products.add(product3); products.add(product4); products.add(product5); // 1.2 print to console System.out.println("Before sorting :- \n"); products.forEach(System.out::println); // 2. ascending-order sorting using Method References products.sort(Comparator.comparing(Product::getProdCreatedDate)); // 2.1 print to console System.out.println("\n\nAscending-order sorting on the basis of LocalDateTime :- \n"); products.forEach(System.out::println); // 3. descending-order sorting using Method References products.sort(Comparator.comparing(Product::getProdCreatedDate).reversed()); // 3.1 print to console - descending order System.out.println("\n\nDescending-order sorting on the basis of LocalDateTime :- \n"); products.forEach(System.out::println); > >
        Before sorting :- Product [prodId=1, prodCreatedDate=2022-05-31T12:35:59, prodRate=13750.0, prodName=Cooker] Product [prodId=2, prodCreatedDate=2022-05-31T11:49:53, prodRate=11750.0, prodName=Sofa-Bed] Product [prodId=3, prodCreatedDate=2022-06-18T05:30:49, prodRate=12750.0, prodName=Fridge] Product [prodId=4, prodCreatedDate=2022-06-18T04:45:37, prodRate=11525.0, prodName=Cupboard] Product [prodId=5, prodCreatedDate=2022-01-10T12:45:01, prodRate=17050.0, prodName=Utensils] Ascending-order sorting on the basis of LocalDateTime :- Product [prodId=5, prodCreatedDate=2022-01-10T12:45:01, prodRate=17050.0, prodName=Utensils] Product [prodId=2, prodCreatedDate=2022-05-31T11:49:53, prodRate=11750.0, prodName=Sofa-Bed] Product [prodId=1, prodCreatedDate=2022-05-31T12:35:59, prodRate=13750.0, prodName=Cooker] Product [prodId=4, prodCreatedDate=2022-06-18T04:45:37, prodRate=11525.0, prodName=Cupboard] Product [prodId=3, prodCreatedDate=2022-06-18T05:30:49, prodRate=12750.0, prodName=Fridge] Descending-order sorting on the basis of LocalDateTime :- Product [prodId=3, prodCreatedDate=2022-06-18T05:30:49, prodRate=12750.0, prodName=Fridge] Product [prodId=4, prodCreatedDate=2022-06-18T04:45:37, prodRate=11525.0, prodName=Cupboard] Product [prodId=1, prodCreatedDate=2022-05-31T12:35:59, prodRate=13750.0, prodName=Cooker] Product [prodId=2, prodCreatedDate=2022-05-31T11:49:53, prodRate=11750.0, prodName=Sofa-Bed] Product [prodId=5, prodCreatedDate=2022-01-10T12:45:01, prodRate=17050.0, prodName=Utensils]

        4. Sort List by LocalDateTime using Stream API :

Оцените статью