Java에서 목록을 맵으로 변환하면 효율적인 데이터 검색, 구조화된 구성, 간결한 표현 등 여러 가지 이점을 제공합니다. 이 기사에서는 목록을 지도로 변환하는 최적의 접근 방식을 살펴봅니다.
최적 변환 접근 방식
Java 8이 도입되면서 변환 프로세스가 다음을 사용하여 크게 단순화되었습니다. 스트림 및 Collectors 클래스. 다음 접근 방식은 한 줄로 목록에서 지도로 변환하는 방법을 보여줍니다.
Map<String, Item> map = list.stream().collect(Collectors.toMap(Item::getKey, item -> item));
Java 8 접근 방식의 이점
이 접근 방식은 여러 가지 장점을 제공합니다. :
코드 데모
다음 코드 조각은 스트림을 사용하여 항목 개체 목록을 개체 목록으로 변환하는 예를 제공합니다. 맵:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!