> Java > java지도 시간 > Java에서 ArrayList의 교차점과 결합체를 효율적으로 찾을 수 있습니까?

Java에서 ArrayList의 교차점과 결합체를 효율적으로 찾을 수 있습니까?

DDD
풀어 주다: 2024-12-23 04:27:10
원래의
226명이 탐색했습니다.

How Can I Efficiently Find the Intersection and Union of ArrayLists in Java?

Java에서 ArrayList의 교차점과 결합체 찾기

ArrayLists 작업 시 두 개 또는 두 개 또는 더 많은 목록. 이는 파일 필터링이나 여러 소스의 데이터 결합과 같은 작업에 유용할 수 있습니다.

교집합 및 합집합 방법

Java는 ArrayList에서 교차 및 합집합을 수행하기 위한 여러 가지 방법을 제공합니다. :

  • retainAll(Collection c): 지정된 컬렉션에 포함된 이 목록의 요소만 유지합니다.
  • removeAll(Collection c): 이 목록의 모든 요소를 ​​제거합니다. 지정된 컬렉션에 포함되어 있습니다.
  • addAll(Collection c): 지정된 컬렉션의 모든 요소를 ​​이 목록에 추가합니다.

이 메서드는 원래 ArrayList를 수정하는데, 이는 모든 경우에 바람직하지 않을 수 있습니다. 또는 원래 목록을 수정하지 않고 교차점과 합집합을 처리하는 고유한 방법을 구현할 수 있습니다.

public static <T> List<T> intersection(List<T> list1, List<T> list2) {
    List<T> list = new ArrayList<>();

    for (T t : list1) {
        if (list2.contains(t)) {
            list.add(t);
        }
    }

    return list;
}

public static <T> List<T> union(List<T> list1, List<T> list2) {
    Set<T> set = new HashSet<>();

    set.addAll(list1);
    set.addAll(list2);

    return new ArrayList<>(set);
}
로그인 후 복사

대체 데이터 구조

ArrayList는 변경 가능한 데이터 구조입니다. 중복 요소를 허용합니다. 집합 작업의 경우 다른 데이터 구조 사용을 고려할 수 있습니다.

  • 집합: 집합은 요소가 고유함을 자동으로 보장합니다. 그러나 요소의 순서는 유지하지 않습니다.
  • SortedSet: 정렬된 세트는 요소를 정렬된 순서로 유지하므로 일부 애플리케이션에 유용할 수 있습니다.

작업에 적합한 데이터 구조를 선택하면 코드의 런타임 및 메모리 사용량을 최적화할 수 있습니다.

위 내용은 Java에서 ArrayList의 교차점과 결합체를 효율적으로 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿