Java 8 - customised sort based on specific order

Java 8 - customised sort based on specific order

In Java 8, you can use the Comparator.comparing method along with Comparator.thenComparing to create a customized sort based on a specific order. Here's an example:

Suppose you have a custom object Person with properties name, age, and gender, and you want to sort a list of Person objects based on the gender property in a specific order (e.g., "Male" before "Female"). You can achieve this using Java 8's Comparator:

import java.util.*; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } public String toString() { return name + " - " + age + " - " + gender; } } public class Main { public static void main(String[] args) { List<Person> people = new ArrayList<>(); people.add(new Person("John", 30, "Male")); people.add(new Person("Alice", 25, "Female")); people.add(new Person("Bob", 35, "Male")); people.add(new Person("Emma", 28, "Female")); // Define custom order for gender List<String> customGenderOrder = Arrays.asList("Male", "Female"); // Create a comparator based on custom order for gender Comparator<Person> comparator = Comparator.comparing(person -> customGenderOrder.indexOf(person.gender)); // Sort by gender using the custom comparator people.sort(comparator); // Print sorted list people.forEach(System.out::println); } } 

In this example, Comparator.comparing is used to create a comparator based on the index of each person's gender in the customGenderOrder list. This ensures that "Male" comes before "Female". Finally, the list of Person objects is sorted using this comparator.

Examples

  1. "How to customize sorting order in Java 8?"

    • Description: This query seeks information on how to customize the sorting order of elements in Java 8.
    • Code Implementation:
      import java.util.Arrays; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = Arrays.asList("apple", "banana", "orange", "grape"); // Custom sorting order List<String> customOrder = Arrays.asList("orange", "banana", "apple", "grape"); // Sorting based on custom order list.sort(Comparator.comparingInt(customOrder::indexOf)); // Display sorted list System.out.println(list); } } 
  2. "How to implement custom sorting order in Java 8 Streams?"

    • Description: This query focuses on implementing custom sorting order using Java 8 Streams.
    • Code Implementation:
      import java.util.Arrays; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = Arrays.asList("apple", "banana", "orange", "grape"); // Custom sorting order List<String> customOrder = Arrays.asList("orange", "banana", "apple", "grape"); // Sorting based on custom order using Streams list = list.stream() .sorted(Comparator.comparingInt(customOrder::indexOf)) .toList(); // Display sorted list System.out.println(list); } } 
  3. "How to sort elements in Java 8 based on a specific order defined by an Enum?"

    • Description: This query deals with sorting elements in Java 8 according to a specific order defined by an Enum.
    • Code Implementation:
      import java.util.Arrays; import java.util.Comparator; import java.util.List; enum CustomOrder { ORANGE, BANANA, APPLE, GRAPE } public class Main { public static void main(String[] args) { List<String> list = Arrays.asList("apple", "banana", "orange", "grape"); // Sorting based on custom order defined by Enum list.sort(Comparator.comparingInt(o -> CustomOrder.valueOf(o.toUpperCase()).ordinal())); // Display sorted list System.out.println(list); } } 
  4. "How to sort custom objects in Java 8 based on specific order?"

    • Description: This query focuses on sorting custom objects in Java 8 based on a specific order.
    • Code Implementation:
      import java.util.Arrays; import java.util.Comparator; import java.util.List; class CustomObject { private String name; public CustomObject(String name) { this.name = name; } public String getName() { return name; } } public class Main { public static void main(String[] args) { List<CustomObject> list = Arrays.asList(new CustomObject("apple"), new CustomObject("banana"), new CustomObject("orange"), new CustomObject("grape")); // Custom sorting order List<String> customOrder = Arrays.asList("orange", "banana", "apple", "grape"); // Sorting custom objects based on custom order list.sort(Comparator.comparingInt(o -> customOrder.indexOf(o.getName()))); // Display sorted list list.forEach(obj -> System.out.println(obj.getName())); } } 
  5. "How to implement a custom Comparator for sorting in Java 8?"

    • Description: This query explores implementing a custom Comparator for sorting elements in Java 8.
    • Code Implementation:
      import java.util.Arrays; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = Arrays.asList("apple", "banana", "orange", "grape"); // Custom sorting order List<String> customOrder = Arrays.asList("orange", "banana", "apple", "grape"); // Custom Comparator for sorting based on custom order Comparator<String> customComparator = Comparator.comparingInt(customOrder::indexOf); // Sorting using custom Comparator list.sort(customComparator); // Display sorted list System.out.println(list); } } 

More Tags

ios6 sobel maven-javadoc-plugin memory-leaks scikits plsqldeveloper flags lifecycle-hook spring-data-elasticsearch fixed

More Programming Questions

More Mortgage and Real Estate Calculators

More Tax and Salary Calculators

More Livestock Calculators

More Pregnancy Calculators