Search code examples
javajava-8java-stream

Sorting string value in a case-insensitive manner in Java 8


How do I sort string values in case-insensitive order in the following?

List<Employee> listofEmployees = Arrays.asList(
    new Employee(1, "aaa", Arrays.asList(123, 345, 678)),
    new Employee(1, "bbb", Arrays.asList(91011, 121314, 1516117)),
    new Employee(2, "ccc", Arrays.asList(181920, 212223, 242526)),
    new Employee(3, "ddd", Arrays.asList(272829, 303132, 333435)),
    new Employee(4, "BBB", Arrays.asList(29, 332, 33))
);

I wrote like this:

listofEmployees.stream().sorted(Comparator.comparing(Employee::getName).reversed())
        .forEach(s -> System.out.println(s.getName()));

How do I pass a string case insensitive option here?


Solution

  • Try this

    Comparator.comparing(Employee::getName, String.CASE_INSENSITIVE_ORDER)