Mục lục
LinkedList là một cấu trúc tuyến tính gồm mỗi node chứa data và con trỏ đến phần tử tiếp theo. Cho nên việc sắp xếp trên ArrayList sẽ khác với ArrayList. Thật may chúng ta được java cung cấp sẵn các hàm sắp xếp, chúng ta sẽ không cần phải implement lại đâu nhé. Giờ chúng ta sẽ xem sắp xếp trên LinkedList sẽ như thế nào.
Ví dụ cho một LinkedList chứa các phần tử [20, 5, 0, 8, -1] . Ví dụ này sẽ được giải trong các phần dưới đây
Sort() trong LinkedList
Sắp xếp tăng dần
import java.util.LinkedList; public class Main { public static void main(String args[]) { LinkedList<Integer> linkedList = new LinkedList<>(); linkedList.add(20); linkedList.add(5); linkedList.add(0); linkedList.add(8); linkedList.add(-1); linkedList.sort(((o1, o2) -> o1 - o2)); System.out.println(linkedList); } }
Output: [-1, 0, 5, 8, 20]
Sắp xếp giảm dần
import java.util.LinkedList; public class Main { public static void main(String args[]) { LinkedList<Integer> linkedList = new LinkedList<>(); linkedList.add(20); linkedList.add(5); linkedList.add(0); linkedList.add(8); linkedList.add(-1); linkedList.sort(((o1, o2) -> o2 - o1)); System.out.println(linkedList); } }
Output: [20, 8, 5, 0, -1]
Sort() trong LinkedList kết hợp với Comparator
Sắp xếp tăng dần
import java.util.Comparator; import java.util.LinkedList; public class Main { public static void main(String args[]) { LinkedList<Integer> linkedList = new LinkedList<>(); linkedList.add(20); linkedList.add(5); linkedList.add(0); linkedList.add(8); linkedList.add(-1); linkedList.sort(Comparator.comparingInt(o -> o)); System.out.println(linkedList); } } // Output: [-1, 0, 5, 8, 20]
Sắp xếp giảm dần
import java.util.Comparator; import java.util.LinkedList; public class Main { public static void main(String args[]) { LinkedList<Integer> linkedList = new LinkedList<>(); linkedList.add(20); linkedList.add(5); linkedList.add(0); linkedList.add(8); linkedList.add(-1); linkedList.sort(Comparator.comparingInt(o -> (int)o).reversed()); System.out.println(linkedList); } } // Output: [20, 8, 5, 0, -1]
Sort trong Collections
Hàm sort của Collections tương tự như hàm sort của LinkedList
import java.util.Collections; import java.util.Comparator; import java.util.LinkedList; public class Main { public static void main(String args[]) { LinkedList<Integer> linkedList = new LinkedList<>(); linkedList.add(20); linkedList.add(5); linkedList.add(0); linkedList.add(8); linkedList.add(-1); Collections.sort(linkedList, Comparator.comparingInt(o -> o)); System.out.println(linkedList); } } // Output: [-1, 0, 5, 8, 20]