Mục lục
Sắp xếp là một trong những method mà chúng ta sử dụng thường xuyên, nên java đã cung cấp sẵn cho chúng ta các method sắp xếp để giúp đơn hoá các tác vụ thường dùng.
Có rất nhiều cách để sắp xếp một ArrayList trong java, nếu các bạn muốn ăn chay thì có thể tham khảo các thuật toán sắp xếp nhé. Việc tìm hiểu các thuật toán sắp xếp là một điều cần thiết cho người mới bắt đầu, thế nhưng về sau thì cứ sài hàng sẵn thôi =).
Method sort trong ArrayList
Ví dụ: Cho một ArrayList số nguyên [7, 9, 5, -1, 4, 4]. Sắp xếp tăng và giảm dần.
Sắp xếp tăng dần
import java.util.*; public class Main { public static void main(String[] args) { List<Integer> arrays = Arrays.asList(7, 9, 5, -1, 4, 4); arrays.sort((o1, o2) -> o1 - o2); System.out.println(arrays); } }
Output: [-1, 4, 4, 5, 7, 9]
Sắp xếp giảm dần
import java.util.*; public class Main { public static void main(String[] args) { List<Integer> arrays = Arrays.asList(7, 9, 5, -1, 4, 4); arrays.sort((o1, o2) -> o2 - o1); System.out.println(arrays); } }
Output: [9, 7, 5, 4, 4, -1]
Method sort trong ArrayList kết hợp Comparator
Sắp xếp tăng dần
import java.util.*; public class Main { public static void main(String[] args) { List<Integer> arrays = Arrays.asList(7, 9, 5, -1, 4, 4); arrays.sort(Comparator.comparingInt(o -> o)); System.out.println(arrays); } }
Output: [-1, 4, 4, 5, 7, 9]
Sắp xếp giảm dần
Để sắp xếp giảm dần với comparator chúng ta cần sử dụng đến method reversed().
import java.util.*; public class Main { public static void main(String[] args) { List<Integer> arrays = Arrays.asList(7, 9, 5, -1, 4, 4); arrays.sort(Comparator.comparingInt(o -> (int) o).reversed()); System.out.println(arrays); } }
Output: [9, 7, 5, 4, 4, -1]
Method sort trong collections
Ví dụ 2: Cho một ArrayList String [“e”, “b”, “d”, “a”, “c”] hãy sắp xếp ArrayList tăng và giảm dần.
Ở ví dụ 1 chúng ta đã sử dụng method sort() của ArrayList cung cấp. Trong ví dụ 2 này chúng ta sẽ sắp xếp với method của Collections.
import java.util.*; public class Main { public static void main(String[] args) { List<String> arrays1 = Arrays.asList("e", "b", "d", "a", "c"); Collections.sort(arrays1, (o1, o2) -> o1.compareTo(o2)); System.out.println("Array ascending"); System.out.println(arrays1); List<String> arrays2 = Arrays.asList("e", "b", "d", "a", "c"); Collections.sort(arrays2, (o1, o2) -> o2.compareTo(o1)); System.out.println("Array descending"); System.out.println(arrays2); } }
Output:
Array ascending
[a, b, c, d, e]
Array descending
[e, d, c, b, a]
Method sort trong collection kết hợp với comparator
import java.util.*; public class Main { public static void main(String[] args) { List<String> arrays1 = Arrays.asList("e", "b", "d", "a", "c"); Collections.sort(arrays1, Comparator.comparing(o -> o)); System.out.println("Array ascending"); System.out.println(arrays1); List<String> arrays2 = Arrays.asList("e", "b", "d", "a", "c"); Collections.sort(arrays2, Comparator.reverseOrder()); System.out.println("Array descending"); System.out.println(arrays2); } }
Output:
Array ascending
[a, b, c, d, e]
Array descending
[e, d, c, b, a]