Sort ArrayList of Strings by Length in Java 8 Using Stream API

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<String> 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<Employee> 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())