Computer >> Máy Tính >  >> Lập trình >> Java

So sánh hai danh sách trong Java

Giao diện Danh sách trong Java cung cấp các phương pháp để có thể so sánh hai Danh sách và tìm các mục phổ biến và còn thiếu từ danh sách.

So sánh hai danh sách không được sắp xếp để có bằng nhau

Nếu bạn muốn kiểm tra xem hai danh sách có bằng nhau không, tức là chứa các mục giống nhau và xuất hiện trong cùng một chỉ mục thì chúng ta có thể sử dụng:

import java.util.Arrays;
import java.util.List;

public class CompareTwoLists {

    public static void main(String[] args) {
        List<String> listOne = Arrays.asList("a", "b", "c");
        List<String> listTwo = Arrays.asList("a", "b", "c");
        List<String> listThree = Arrays.asList("c", "a", "b");

        boolean isEqual = listOne.equals(listTwo);
        System.out.println(isEqual);

        isEqual = listOne.equals(listThree);
        System.out.println(isEqual);
    }
}

Đầu ra:

true
false

Như bạn có thể thấy equals() phương pháp so sánh các mục và vị trí của chúng trong danh sách.

Có liên quan:

  • Cách lặp qua ArrayList trong Java
  • Cách xóa các bản sao khỏi danh sách
  • Cách chuyển đổi danh sách thành mảng trong Java

So sánh hai danh sách đã sắp xếp

Hai danh sách có chứa các mục giống nhau không?

Để so sánh hai danh sách cho bằng nhau về mặt hàng bất kể vị trí của chúng, chúng ta cần sử dụng sort() từ Collections() lớp học.

Ví dụ:

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class CompareTwoLists {

    public static void main(String[] args) {
        List<String> listOne = Arrays.asList("b", "c", "a");
        List<String> listTwo = Arrays.asList("a", "c", "b");
        List<String> listThree = Arrays.asList("c", "a", "b");

        Collections.sort(listOne);
        Collections.sort(listTwo);
        Collections.sort(listThree);

        boolean isEqual = listOne.equals(listTwo);
        System.out.println(isEqual);

        isEqual = listOne.equals(listThree);
        System.out.println(isEqual);
    }
}

Đầu ra:

true
true

So sánh hai danh sách, tìm sự khác biệt

List giao diện cũng cung cấp các phương pháp để tìm sự khác biệt giữa hai danh sách.

removeAll() phương pháp so sánh hai danh sách và loại bỏ tất cả các mục chung. Những gì còn lại là các mục bổ sung hoặc thiếu.

Ví dụ:khi chúng tôi so sánh hai danh sách, listOnelistTwo và chúng tôi muốn tìm hiểu những mục nào bị thiếu trong listTwo chúng tôi sử dụng:

import java.util.ArrayList;
import java.util.Arrays;

public class CompareTwoArrayLists {

    public static void main(String[] args) {
        ArrayList<Integer> listOne = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

        ArrayList<Integer> listTwo = new ArrayList<>(Arrays.asList(1, 2, 4, 5, 6, 7));

        listOne.removeAll(listTwo);

        System.out.println("Missing items from listTwo " + listOne);
    }
}

Đầu ra:

Missing items from listTwo [3]

Tương tự như vậy, nếu chúng ta sử dụng:

listTwo.removeAll(listOne);

System.out.println("Missing items from listOne " + listTwo);

Chúng tôi sẽ nhận được:

Missing items from listOne [6, 7]

So sánh hai danh sách, tìm các mục chung

retainAll() phương pháp chỉ giữ các mục phổ biến trong cả hai danh sách. Ví dụ:

public class CompareTwoArrayLists {

    public static void main(String[] args) {
        ArrayList<Integer> listOne = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

        ArrayList<Integer> listTwo = new ArrayList<>(Arrays.asList(1, 2, 4, 5, 6, 7));

        listOne.retainAll(listTwo);

        System.out.println("Common items in both lists " + listOne);
    }
}

Đầu ra:

Common items in both lists [1, 2, 4, 5]