Thông thường trước Java 8, khi chúng ta muốn sort các phần tử trong một List object, chúng ta sẽ sử dụng đối tượng Comparator. Ví dụ như:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package com.huongdanjava.javaexample; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Example { public static void main(String[] args) { List<String> names = new ArrayList<>(); names.add("Thanh"); names.add("Khanh"); names.add("Tan"); Collections.sort(names, new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.compareTo(s2); } }); for (String s : names) { System.out.println(s); } } } |
Kết quả:
Từ Java 8 trở đi, chúng ta có thêm một cách khác để sort các phần tử trong một đối tượng List đó là sử dụng phương thức sort() của đối tượng List này với Lambda Expression.
Bây giờ nếu mình sửa lại ví dụ ở trên để sử dụng phương thức sort() của đối tượng List và Lambda Expression:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package com.huongdanjava.javaexample; import java.util.ArrayList; import java.util.List; public class Example { public static void main(String[] args) { List<String> names = new ArrayList<>(); names.add("Thanh"); names.add("Khanh"); names.add("Tan"); names.sort((s1, s2) -> s1.compareTo(s2)); names.forEach(System.out::println); } } |
thì kết quả sẽ tương tự như trên:
Tham số của phương thức sort() là interface Comparator và bởi vì interface Comparator chỉ có một phương thức, nghĩa là nó còn có thể gọi là Functional Interface nên chúng ta có thể áp dụng Lambda Expression cho nó.