Thông thường, trước Java 8, khi muốn sắp xếp các phần tử của một List trong Java, 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ó một cách khác để làm điều này. Đó chính là sử dụng phương thức sort() của đối tượng List với Lambda Expression.
Giờ mình có thể viết lại ví dụ trên với phương thức sort() và Lambda Expression như sau:
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); } } |
Tham số của phương thức sort() là một Comparator interface. Comparator interface là một Functional Interface nên chúng ta có thể sử dụng Lambda Expression cho nó.
Kết quả vẫn như vậy: