스트림을 사용하여 중첩 된 목록의 찾기 기능을 다시 작성하는 방법

JRL :

가 주어지면 List<Unicorn>각 유니콘이를 포함하는 List<Rider>경우 유니콘과 라이더 하위 집합에 대한 최신 라이더 정보를 반환합니다.

나는 이것을 다음과 같이 썼다.

static Optional<ImmutablePair<Unicorn, Rider>> findLatestExperiencedRiderInfo(
        final List<Unicorn> unicorns) {

    Rider latestExperiencedRider = null;
    Unicorn unicornOfLatestExperiencedRider = null;
    long latestRideTime = 0L;

    for (final Unicorn unicorn : unicorns) {
        for (final Rider rider : unicorn.getRiders()) {
            if (rider.getType() == Rider.Type.EXPERIENCED) {
                final long time = rider.getRideTime();
                if (time > latestRideTime) {
                    latestRideTime = time;
                    latestExperiencedRider = rider;
                    unicornOfLatestExperiencedRider = unicorn;
                }
            }
        }
    }

    return latestExperiencedRider == null
            ? Optional.empty()
            : Optional.of(new ImmutablePair<>(
                    unicornOfLatestExperiencedRider,
                    latestExperiencedRider));
}

나는 더 간결한 버전을 원했고 아마도 스트림을 사용하거나 다르게 작성되었습니다. 당신의 제안은 무엇입니까?

user7 :

다음은 스트림 버전입니다.

unicorns.stream()
        .flatMap(unicorn -> unicorn.getRiders()
                .stream()
                .filter(rider -> rider.getType() == Rider.Type.EXPERIENCED)
                .map(rider -> new AbstractMap.SimpleEntry<>(unicorn, rider)))
        .max(Comparator.comparingLong(entry -> entry.getValue().getRideTime()))
        .map(entry -> new ImmutablePair<>(entry.getKey(), entry.getValue()));

flatMap부분은 모든 Riders를 AbstractMap.SimpleEntry각각 a Rider와 그 Unicorn부분을 포함하는 s 로 평평하게 만듭니다. 그런 다음 우리는 두 비교하여 최대 항목 수 Rider의를 rideTime. 존재한다면 ImmutablePair 결과를 생성합니다.Optional.empty

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

스트림을 사용하여 문자열의 중첩 된 배열 목록의 최대 값을 찾는 방법

맵을 사용하여 중첩 된 목록의 평균 찾기

중첩 된 목록을 반복하는 기능적 방법

asp.net의 div 태그에서 다른 컨트롤을 사용하여 중첩 된 GridView 기능을 달성하는 방법

Java 스트림을 사용하여 이중 중첩 목록 내의 속성을 기반으로 컬렉션을 필터링하는 방법

중첩된 개체 속성에 액세스하기 위해 Twig의 특성 기능을 사용하는 방법

점 표기법을 사용하여 중첩 된 맵에서 중첩 된 항목을 제거하는 방법

람다 / 스트림을 사용하여 중첩 된 개체 목록을지도 (Map <Integer, Map <Integer, Object >>)로 변환하는 방법

범위의 찾기 방법을 사용하여 목록 상자에 표시된 시퀀스

목록을 사용하여 중첩 된 사전 만들기

스타일 구성 요소를 사용하여 중첩 된 기능 구성 요소의 스타일을 지정하는 방법

중첩 된 목록에서 스플라인 기능을 작동시키는 방법

중첩 된 사전 및 목록 목록을 작성하는 방법

개체 자체에 대한 참조 목록을 보유하고 자바 스트림을 사용하여 중첩 된 목록을 인쇄하는 방법

중첩 된 목록을 더 간결하게 병합하기위한 코드를 작성하는 방법

AutoMapper를 사용하여 중첩 된 목록을 다른 목록에 매핑하는 방법

문자열 인식 기능을 통해 lapply를 사용하여 중첩 된 목록에 새 열을 추가하는 방법

스트림을 사용하여 중첩된 개체 목록을 유사한 정보를 가진 개체 목록으로 변환하는 방법

목록 열 또는 중첩 된 데이터를 사용하여 tibbles의 동등성을 테스트합니다.

자바 스트림을 사용하여 중첩 된 목록을 변형

createcriteria 중첩 객체 속성을 사용하여 목록 찾기

다른 목록 (중첩 된 목록)의 목록 요소에서 시작하는 새 목록 만들기

트림 기능을 사용하여 목록 내부를 트림하는 방법

REST Assured : JSON에서 중첩 된 속성을 사용하여 요소를 찾고 다른 속성의 유효성을 검사하는 방법

SnakeYAML을 사용하여 중첩 된 목록을 덤프하는 방법

자바 스트림 API를 사용하여 중첩 된 목록을 합산

대해 forEach, 자바 (8)을 사용하여 목록 목록 (중첩 된 목록)을 생성 스트림

1 + 외부 루프의 인덱스로 초기화 된 중첩 루프의 동작을 에뮬레이트하는 스트림을 만드는 방법

spoc을 사용하여 Groovy 테스트에서 중첩 된 목록 개체의 속성을 테스트하는 방법

TOP 리스트

  1. 1

    Ionic 2 로더가 적시에 표시되지 않음

  2. 2

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  3. 3

    std :: regex의 일관성없는 동작

  4. 4

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  5. 5

    java.lang.UnsatisfiedLinkError : 지정된 모듈을 찾을 수 없습니다

  6. 6

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  7. 7

    상황에 맞는 메뉴 색상

  8. 8

    SMTPException : 전송 연결에서 데이터를 읽을 수 없음 : net_io_connectionclosed

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    Windows cmd를 통해 Anaconda 환경에서 Python 스크립트 실행

  11. 11

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  12. 12

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  13. 13

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  14. 14

    Cassandra에서 버전이 지정된 계층의 효율적인 모델링

  15. 15

    복사 / 붙여 넣기 비활성화

  16. 16

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  17. 17

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  18. 18

    SQL Server-현명한 데이터 문제 받기

  19. 19

    Seaborn에서 축 제목 숨기기

  20. 20

    ArrayBufferLike의 typescript 정의의 깊은 의미

  21. 21

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

뜨겁다태그

보관