Learn Java 8 streams with an example - How to sort a list
Example 1: Sort the List In the natural order
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class DriverClass {
public static void main(String[] args) {
List<String> list = Arrays.asList("H", "A", "Z", "L", "B", "Y", "M", "a", "c");
list.stream().sorted().collect(Collectors.toList()).forEach
(System.out::println);
}
}
Output:
A
B
H
L
M
Y
Z
a
c
Example 2: Sort the List In the reverse Order
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class DriverClass {
public static void main(String[] args) {
List<String> list = Arrays.asList("H", "A", "Z", "L", "B", "Y", "M", "a", "c");
list.stream().sorted(Comparator.reverseOrder()).
collect(Collectors.toList()).forEach(System.out::println);
}
}
Output:
c
a
Z
Y
M
L
H
B
A
Example 3: Sort the List Objects In the natural order (sort by salary)
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class DriverClass {
static List<Employee> employees = Arrays.asList(
new Employee("Alpha", 3000),
new Employee("Beta", 40000),
new Employee("Noob", 10000),
new Employee("Pro", 200000),
new Employee("Sibin", 5000));
public static void main(String[] args) {
List<Employee> sortedList = employees.stream()
.sorted(Comparator.comparingInt(Employee::getSalary))
.collect(Collectors.toList());
sortedList.forEach(System.out::println);
}
static class Employee {
private String name;
private int salary;
public Employee(String name, int salary) {
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", salary=" + salary +
'}';
}
}
}
Output:
Employee{name='Alpha', salary=3000}
Employee{name='Sibin', salary=5000}
Employee{name='Noob', salary=10000}
Employee{name='Beta', salary=40000}
Employee{name='Pro', salary=200000}
Example 4: Sort the List Objects In the natural order (sort by name)
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class DriverClass {
static List<Employee> employees = Arrays.asList(
new Employee("Beta", 3000),
new Employee("Alpha", 40000),
new Employee("Pro", 10000),
new Employee("Noob", 200000),
new Employee("Sibin", 5000));
public static void main(String[] args) {
List<Employee> sortedList = employees.stream()
.sorted(Comparator.comparing(Employee::getName))
.collect(Collectors.toList());
sortedList.forEach(System.out::println);
}
static class Employee {
private String name;
private int salary;
public Employee(String name, int salary) {
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", salary=" + salary +
'}';
}
}
}
Output:
Employee{name='Alpha', salary=40000}
Employee{name='Beta', salary=3000}
Employee{name='Noob', salary=200000}
Employee{name='Pro', salary=10000}
Employee{name='Sibin', salary=5000}
Example 5: Sort the List Objects In the reverse order (sort by salary)
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class DriverClass {
static List<Employee> employees = Arrays.asList(
new Employee("Beta", 3000),
new Employee("Alpha", 40000),
new Employee("Pro", 10000),
new Employee("Noob", 200000),
new Employee("Sibin", 5000));
public static void main(String[] args) {
List<Employee> sortedList = employees.stream()
.sorted(Comparator.comparingInt(Employee::getSalary)
.reversed())
.collect(Collectors.toList());
sortedList.forEach(System.out::println);
}
static class Employee {
private String name;
private int salary;
public Employee(String name, int salary) {
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", salary=" + salary +
'}';
}
}
}
Output:
Employee{name='Noob', salary=200000}
Employee{name='Alpha', salary=40000}
Employee{name='Pro', salary=10000}
Employee{name='Sibin', salary=5000}
Employee{name='Beta', salary=3000}
Example 6: Sort the List Objects In the reverse order (sort by name)
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class DriverClass {
static List<Employee> employees = Arrays.asList(
new Employee("Beta", 3000),
new Employee("Alpha", 40000),
new Employee("Pro", 10000),
new Employee("Noob", 200000),
new Employee("Sibin", 5000));
public static void main(String[] args) {
List<Employee> sortedList = employees.stream()
.sorted(Comparator.comparing(Employee::getName)
.reversed())
.collect(Collectors.toList());
sortedList.forEach(System.out::println);
}
static class Employee {
private String name;
private int salary;
public Employee(String name, int salary) {
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", salary=" + salary +
'}';
}
}
}
Output:
Employee{name='Sibin', salary=5000}
Employee{name='Pro', salary=10000}
Employee{name='Noob', salary=200000}
Employee{name='Beta', salary=3000}
Employee{name='Alpha', salary=40000}
More...