Sort LinkedList chứa các phần tử null

Việc LinkedList chứa các phần tử null là chuyện thường xảy ra trong lập trình. Khi bạn tiến hành sắp xếp mà không đế ý đến những phần tử null này thì có thể chương trình sẽ quăg Nullpointer cho chúng ta.

Do đó java cung cấp cung cấp cho chúng ta một cơ chế mạnh mẽ để xử lý công việc này qua 2 method:

  • nullsFirst
  • nullLast

nullsFirst

Đặt các phần tử null lên đầu LinkedList sau khi hoàn tất quá trình sắp xếp

Syntax:

public static <T> Comparator<T> nullsFirst(Comparator<? super T> comparator);

Như trên hàm nullsFirst() trả về Comparator nên chúng ta có thể tuỳ ý sử dụng với Collections.sort() hoặc LinkedList.sort().

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(200);
        linkedList.add(300);
        linkedList.add(null);
        linkedList.add(150);
        linkedList.add(600);

        Collections.sort(linkedList, Comparator.nullsFirst(Comparator.comparingInt(o -> o)));

        // linkedList.sort(Comparator.nullsFirst(Comparator.comparingInt(o -> o)));

        linkedList.forEach(e -> System.out.print(e + " "));
    }
}

Output: null 150 200 300 600

nullsLast

Chuyển các phần tử null xuống cái ArrayList sau khi hoàn tất quá trình sắp xếp.

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(200);
        linkedList.add(300);
        linkedList.add(null);
        linkedList.add(150);
        linkedList.add(600);

        Collections.sort(linkedList, Comparator.nullsLast(Comparator.comparingInt(o -> o)));

        // linkedList.sort(Comparator.nullsLast(Comparator.comparingInt(o -> o)));

        linkedList.forEach(e -> System.out.print(e + " "));
    }
}

Output: 150 200 300 600 null

Note:

nullsFirstnullsLast chỉ có tác dụng đẩy các phần tử null lên đầu hoặc cuối LinkedList, mà vẫn giữ nguyên kết quả sắp xếp trong biểu thức. Ví dụ, mình sắp xếp tăng dần, trong cả 2 ví dụ thứ tự tăng dần vẫn không đổi chỉ có vị trí của các phần tử bị null được di chuyển.

‹Previous Next›

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x