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

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

Barbara Streisand
Barbara Streisand원래의
2024-11-28 19:31:11482검색

How Can I Efficiently Convert a Java List to a Map Using Streams?

Java에서 목록을 맵으로 변환

Java에서 목록을 맵으로 변환하면 효율적인 데이터 검색, 구조화된 구성, 간결한 표현 등 여러 가지 이점을 제공합니다. 이 기사에서는 목록을 지도로 변환하는 최적의 접근 방식을 살펴봅니다.

최적 변환 접근 방식

Java 8이 도입되면서 변환 프로세스가 다음을 사용하여 크게 단순화되었습니다. 스트림 및 Collectors 클래스. 다음 접근 방식은 한 줄로 목록에서 지도로 변환하는 방법을 보여줍니다.

Map<String, Item> map = list.stream().collect(Collectors.toMap(Item::getKey, item -> item));

Java 8 접근 방식의 이점

이 접근 방식은 여러 가지 장점을 제공합니다. :

  • 간결성: 한 줄 구문을 사용하면 수동 반복 및 명시적 매핑이 필요하지 않습니다.
  • 효율성: 프로세스 요소를 느리게 스트리밍하여 메모리 사용량을 최적화하고 계산 시간을 줄입니다.
  • 확장성: Collectors 클래스는 다양한 컬렉션 작업을 제공하여 사용자 정의가 가능합니다. 변환.

코드 데모

다음 코드 조각은 스트림을 사용하여 항목 개체 목록을 개체 목록으로 변환하는 예를 제공합니다. 맵:

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Test {

    public static void main(String[] args) {
        List<Item> list = Arrays.asList(new Item(1), new Item(2), new Item(3), new Item(4));

        Map<String, Item> map = list.stream()
                .collect(Collectors.toMap(Item::getKey, item -> item));

        map.forEach((k, v) -> System.out.println(k + " => " + v));
    }
}

class Item {

    private final int i;

    public Item(int i) {
        this.i = i;
    }

    public String getKey() {
        return "Key-" + i;
    }

    @Override
    public String toString() {
        return "Item [i=" + i + "]";
    }
}

출력:

Key-1 => Item [i=1]
Key-2 => Item [i=2]
Key-3 => Item [i=3]
Key-4 => Item [i=4]

중복 키 처리

중복 키 값이 존재하는 경우 목록에서 Collectors.toMap 메서드를 사용할 때 병합 연산자를 지정할 수 있습니다. 이 연산자는 중복 키를 처리하는 방법을 결정합니다. 예를 들어 중복 키와 관련된 값을 합산하려면 다음 연산자를 사용합니다.

Map<String, Integer> map = intList.stream()
        .collect(Collectors.toMap(i -> String.valueOf(i % 3), i -> i, Integer::sum));

이 결과는 다음과 같습니다.

0 => 9 (i.e. 3 + 6)
1 => 5 (i.e. 1 + 4)
2 => 7 (i.e. 2 + 5)

결론

스트림과 Collectors 클래스를 사용하면 Java에서 List를 Map으로 변환하는 효율적이고 간결한 방법이 제공됩니다. 이 접근 방식은 변환 프로세스를 단순화하고 중복 키 처리에 추가적인 유연성을 제공합니다.

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

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