>Java >java지도 시간 >Java의 여러 목록 사이에서 공통 요소를 효율적으로 찾으려면 어떻게 해야 합니까?

Java의 여러 목록 사이에서 공통 요소를 효율적으로 찾으려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-02 03:31:09193검색

How Can I Efficiently Find Common Elements Between Multiple Lists in Java?

여러 목록에서 공통 요소 확인

Java에서는 여러 목록에서 공유하는 공통 요소를 찾아야 할 수도 있습니다. 이는 데이터 세트 비교 또는 교차점 식별과 같은 작업에 유용한 작업이 될 수 있습니다. 이 기사에서는 Java 컬렉션 프레임워크를 사용하여 두 목록 사이의 공통 요소를 검색하는 효율적인 접근 방식을 살펴봅니다.

시작하려면 각각 세 개의 정수를 포함하는 두 개의 ArrayList 개체가 있는 시나리오를 생각해 보세요. 목표는 두 목록에 모두 있는 요소를 찾아 반환하는 것입니다.

해결책: Collection#retainAll()

이를 달성하는 가장 간단한 방법 중 하나 Collection#retainAll() 메서드를 사용하는 것입니다. 이 메소드는 지정된 컬렉션 매개변수에도 존재하지 않는 모든 요소를 ​​제거하여 호출하는 컬렉션을 수정합니다.

listA.retainAll(listB);

위 코드를 실행한 후 listA에는 listA와 listB 모두에 공통적인 요소만 포함됩니다. .

대체 접근 방식: 새 컬렉션 만들기

필요한 경우 listA의 원본 콘텐츠를 보존하면 공통 요소가 포함된 새 컬렉션을 만들 수 있습니다.

List<Integer> common = new ArrayList<>(listA);
common.retainAll(listB);

이 경우 공통 목록에는 listA와 listB 모두에 존재하는 요소만 포함되지만 listA의 원본 콘텐츠는 그대로 유지됩니다.

스트림 기반 솔루션

Java 8은 강력한 컬렉션을 처리하고 조작하는 선언적 방법을 제공하는 스트림 API입니다. stream#filter() 메소드를 활용하여 특정 조건자를 기반으로 요소를 필터링할 수 있습니다.

List<Integer> common = listA.stream().filter(listB::contains).toList();

이 스트림 기반 접근 방식은 listA의 각 요소에 대해 필터 작업을 수행하고 다음을 사용하여 해당 요소가 listB에 존재하는지 확인합니다. 포함() 메소드. 결과 목록에는 listA와 listB 사이의 공통 요소만 포함됩니다.

위 내용은 Java의 여러 목록 사이에서 공통 요소를 효율적으로 찾으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.