> Java > java지도 시간 > 속성별로 Java ArrayList에서 객체를 효율적으로 찾는 방법은 무엇입니까?

속성별로 Java ArrayList에서 객체를 효율적으로 찾는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-04 15:39:11
원래의
228명이 탐색했습니다.

How to Efficiently Find an Object in a Java ArrayList by Property?

속성으로 ArrayList에서 객체 찾기

ArrayList에 저장된 대용량 데이터셋을 다룰 때 특정 속성을 기반으로 특정 객체를 찾는다. 도전적일 수 있습니다. 이 기사에서는 특히 codeIsin 속성으로 Carnet 객체의 ArrayList를 검색하는 데 초점을 맞춰 이 시나리오에 대한 효율적인 솔루션을 살펴봅니다.

Java 8 스트림 접근 방식:

Java 8에서는 컬렉션에 대한 작업을 수행하는 우아하고 간결한 방법을 제공하는 강력한 스트림 API입니다. ArrayList에서 속성별로 개체를 찾으려면 stream() 함수를 사용하여 요소 스트림을 만든 다음 filter() 함수를 사용하여 원하는 속성과 일치하지 않는 요소를 필터링할 수 있습니다. 마지막으로 findFirst() 함수를 사용하여 일치하는 첫 번째 요소를 검색하거나 요소가 없으면 null을 반환합니다.

public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsIn) {
    return listCarnet.stream().filter(carnet -> codeIsIn.equals(carnet.getCodeIsin())).findFirst().orElse(null);
}
로그인 후 복사

유틸리티 클래스 메서드 접근 방식:

이것은 접근 방식에는 다양한 속성에 대한 검색 논리를 캡슐화하는 정적 메서드를 사용하여 유틸리티 클래스를 만드는 것이 포함됩니다. 이는 재사용성과 모듈성을 보장합니다. FindUtils 클래스는 컬렉션과 조건자 함수를 매개 변수로 받아들이는 일반 findByProperty() 메서드를 제공합니다. 조건자 함수는 컬렉션 필터링 조건을 정의합니다.

public final class FindUtils {
    public static <T> T findByProperty(Collection<T> col, Predicate<T> filter) {
        return col.stream().filter(filter).findFirst().orElse(null);
    }
}

public final class CarnetUtils {
    public static Carnet findByCodeTitre(Collection<Carnet> listCarnet, String codeTitre) {
        return FindUtils.findByProperty(listCarnet, carnet -> codeTitre.equals(carnet.getCodeTitre()));
    }

    public static Carnet findByNomTitre(Collection<Carnet> listCarnet, String nomTitre) {
        return FindUtils.findByProperty(listCarnet, carnet -> nomTitre.equals(carnet.getNomTitre()));
    }

    public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsin) {
        return FindUtils.findByProperty(listCarnet, carnet -> codeIsin.equals(carnet.getCodeIsin()));
    }
}
로그인 후 복사

위 내용은 속성별로 Java ArrayList에서 객체를 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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