Learn how to sort ArrayList of strings by length in Java 8 using Stream API and Comparator.comparing() . Includes simple example, code explanation, and output.
Code Explanation (Step-by-Step)
- Convert the array into a list using Arrays.asList().
- Convert the list into a stream using stream() method.
- Use Comparator.comparing(String::length) to sort strings by length.
- Print the sorted result using forEach() method.
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class SortWithLength {
public static void main(String[] args) {
List listString = Arrays.asList("hibernate", "java", "spring", "servlet", "jsp");
listString.stream()
.sorted(Comparator.comparing(String::length))
.forEach(System.out::println);
}
}
Output :-
jsp
java
spring
servlet
hibernate
Use Comparator.comparing()
Comparator.comparing() is a static method introduced in Java 8 that helps you sort objects based on a specific field or property.
Syntax : Comparator.comparing(Function<? super T, ? extends U> keyExtractor)
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
class Employee {
private int id;
private String name;
private double salary;
public Employee(int id, String name, double salary) {
this.id = id;
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public int getId() {
return id;
}
@Override
public String toString() {
return "Employee{id=" + id + ", name='" + name + "', salary=" + salary + "}";
}
}
public class EmployeeSortExample {
public static void main(String[] args) {
List employees = Arrays.asList(
new Employee(101, "Santosh", 50000),
new Employee(102, "Amit", 45000),
new Employee(103, "Ravi", 60000),
new Employee(104, "Deepak", 55000)
);
employees.stream()
.sorted(Comparator.comparing(Employee::getName))
.forEach(System.out::println);
}
}
Output :
Employee{id=102, name=’Amit’, salary=45000.0}
Employee{id=104, name=’Deepak’, salary=55000.0}
Employee{id=103, name=’Ravi’, salary=60000.0}
Employee{id=101, name=’Santosh’, salary=50000.0}
FAQ
How do you sort a list of strings by length in Java 8?
Use stream().sorted(Comparator.comparing(String::length)).
What does Comparator.comparing() do?
It creates a comparator based on a given key (e.g., string length).
Can we sort in descending order?
Yes, using below code.
.sorted(Comparator.comparing(String::length).reversed())