> Java > java지도 시간 > Java 8 스트림을 사용하여 목록을 지도로 효율적으로 변환하려면 어떻게 해야 합니까?

Java 8 스트림을 사용하여 목록을 지도로 효율적으로 변환하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-12-28 13:16:10
원래의
520명이 탐색했습니다.

How Can I Efficiently Translate Lists to Maps Using Java 8 Streams?

Java 8 스트림을 사용하여 효율적으로 목록을 맵으로 변환

Java 8에서 일반적인 작업은 스트림과 람다를 사용하여 객체 목록을 맵으로 변환하는 것입니다. 이는 원하는 동작과 Guava와 같은 타사 라이브러리의 가용성에 따라 다양한 방법으로 달성할 수 있습니다.

Java 7 및 하위 접근 방식

전통적으로 매핑은 수동 반복과 손으로 직접 작성한 지도 목록 루프:

private Map<String, Choice> nameMap(List<Choice> choices) {
    final Map<String, Choice> hashMap = new HashMap<>();
    for (final Choice choice : choices) {
        hashMap.put(choice.getName(), choice);
    }

    return hashMap;
}
로그인 후 복사

Guava 기반 솔루션

Guava는 지정된 키 추출기를 기반으로 목록에서 지도를 생성하기 위한 편리한 방법인 Maps.uniqueIndex를 제공합니다.

Java가 포함된 구아바 7

private Map<String, Choice> nameMap(List<Choice> choices) {
    return Maps.uniqueIndex(choices, new Function<Choice, String>() {

        @Override
        public String apply(final Choice input) {
            return input.getName();
        }

    });
}
로그인 후 복사

Java 8 Lambda를 사용하는 Guava

Java 8 람다를 활용하면 코드가 더욱 단순화됩니다.

private Map<String, Choice> nameMap(List<Choice> choices) {
    return Maps.uniqueIndex(choices, Choice::getName);
}
로그인 후 복사

수집가 여러분 Rescue

Java 8의 Collectors 클래스는 목록을 지도에 매핑하기 위한 강력한 구현을 제공합니다. toMap 수집기는 두 가지 인수를 사용합니다.

  • 키 추출 함수(각 요소에 대한 키를 검색하는 함수)
  • 값 추출 함수(각 요소에 대한 값을 검색하는 함수) 요소)

이 경우 Choice::getName 및 Function.identity()를 사용하여 키와 값을 검색할 수 있습니다. 각각:

Map<String, Choice> result =
    choices.stream().collect(Collectors.toMap(Choice::getName,
                                              Function.identity()));
로그인 후 복사

위 내용은 Java 8 스트림을 사용하여 목록을 지도로 효율적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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