Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 두 목록 비교

Java의 List 인터페이스는 두 개의 List를 비교하고 목록에서 공통 항목과 누락 항목을 찾을 수 있는 메소드를 제공합니다.

정렬되지 않은 두 목록 비교

두 목록이 동일한지, 즉 동일한 항목을 포함하고 동일한 색인에 나타나는지 확인하려면 다음을 사용할 수 있습니다.

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
true

equals()에서 볼 수 있듯이 메소드는 목록에서 항목과 위치를 비교합니다.

관련:

  • 자바에서 ArrayList를 반복하는 방법
  • 목록에서 중복을 제거하는 방법
  • 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() 메소드는 두 목록을 비교하고 모든 공통 항목을 제거합니다. 남은 것은 추가되거나 누락된 항목입니다.

예를 들어 두 목록을 비교할 때 listOnelistTwo 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]