Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Java เปรียบเทียบสองรายการ

อินเทอร์เฟซรายการใน Java มีวิธีเปรียบเทียบสองรายการและค้นหารายการทั่วไปและรายการที่ขาดหายไปจากรายการ

เปรียบเทียบรายการที่ไม่เรียงลำดับสองรายการเพื่อความเท่าเทียมกัน

หากคุณต้องการตรวจสอบว่าสองรายการเท่ากัน นั่นคือ มีรายการเดียวกันและปรากฏในดัชนีเดียวกัน เราสามารถใช้:

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);
    }
}

เอาท์พุต:

true
false

อย่างที่คุณเห็น equals() วิธีเปรียบเทียบรายการและตำแหน่งในรายการ

ที่เกี่ยวข้อง:

  • วิธีการวนรอบ ArrayList ใน Java
  • วิธีลบรายการที่ซ้ำกันออกจากรายการ
  • วิธีแปลงรายการเป็นอาร์เรย์ใน Java

เปรียบเทียบรายการที่จัดเรียงสองรายการ

สองรายการมีรายการเดียวกันหรือไม่

ในการเปรียบเทียบสองรายการเพื่อความเท่าเทียมกันในแง่ของรายการโดยไม่คำนึงถึงตำแหน่ง เราจำเป็นต้องใช้ sort() วิธีการจาก Collections() ชั้นเรียน

ตัวอย่างเช่น:

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);
    }
}

เอาท์พุต:

true
true

เปรียบเทียบสองรายการ ค้นหาความแตกต่าง

List อินเทอร์เฟซยังมีวิธีการค้นหาความแตกต่างระหว่างสองรายการ

removeAll() วิธีเปรียบเทียบสองรายการและลบรายการทั่วไปทั้งหมด เหลือแต่ของเพิ่มหรือขาด

ตัวอย่างเช่น เมื่อเราเปรียบเทียบสองรายการ listOne และ listTwo และเราต้องการค้นหาว่ารายการใดบ้างที่ขาดหายไปจาก listTwo เราใช้:

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);
    }
}

เอาท์พุต:

Missing items from listTwo [3]

ในทำนองเดียวกัน หากเราใช้:

listTwo.removeAll(listOne);

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

เราจะได้:

Missing items from listOne [6, 7]

เปรียบเทียบสองรายการ ค้นหารายการทั่วไป

retainAll() วิธีเก็บเฉพาะรายการที่เหมือนกันในทั้งสองรายการ ตัวอย่างเช่น:

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);
    }
}

เอาท์พุต:

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