>  기사  >  Java  >  Java 8의 Stream API: Collect() 메소드를 사용하여 Map 객체로 컬렉션을 수집하는 방법

Java 8의 Stream API: Collect() 메소드를 사용하여 Map 객체로 컬렉션을 수집하는 방법

WBOY
WBOY원래의
2023-07-31 15:24:191918검색

새로운 Stream API가 Java 8에 도입되어 컬렉션 데이터를 처리하는 보다 효율적이고 간결한 방법을 제공합니다. Stream API는 데이터를 처리하고 변환하는 다양한 방법을 제공하며, 그 중 collect() 방법은 가장 중요하고 일반적으로 사용되는 방법 중 하나입니다. 이 문서에서는 collect() 메서드를 사용하여 컬렉션을 지도 객체로 수집하는 방법을 설명하고 해당 코드 예제를 제공합니다. collect() 方法是一个非常重要且常用的方法之一。本文将介绍如何使用 collect() 方法将集合收集为 Map 对象,并提供相应的代码示例。

在 Java 8 之前,如果我们想将一个集合转换为 Map 对象,需要使用繁琐的遍历和添加操作。而在 Java 8 中使用 Stream API 的 collect() 方法可以更加方便地实现这个目标。

collect() 方法是 Stream API 的终止操作之一,它接收一个 Collector 参数,用于指定收集的方式。在收集为 Map 对象时,我们可以使用 Collectors.toMap() 方法来进行收集。

下面是使用 collect() 方法将集合收集为 Map 对象的示例代码:

import java.util.*;
import java.util.stream.Collectors;

public class StreamCollectExample {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "orange");

        Map<String, Integer> fruitLengthMap = fruits.stream()
                .collect(Collectors.toMap(
                        fruit -> fruit,                   // Key 映射函数
                        fruit -> fruit.length()           // Value 映射函数
                ));

        System.out.println(fruitLengthMap);
    }
}

上述代码中,我们首先创建了一个包含三个水果的集合 fruits,然后通过 stream() 方法将其转换为一个流。接着使用 collect() 方法并传入 Collectors.toMap() 方法作为参数,该方法接收两个 lambda 表达式参数,用于指定 Key 和 Value 的映射函数。

在我们的示例中,Key 映射函数是 fruit -> fruit,即将水果作为 Key;Value 映射函数是 fruit -> fruit.length(),即将水果的长度作为 Value。最后,collect() 方法将流中的元素按照指定的映射函数进行处理,并返回一个 Map 对象。

输出结果如下:

{orange=6, banana=6, apple=5}

可以看到,最终我们获得了一个包含水果及其长度的 Map 对象。

除了基本的收集功能,Collectors.toMap() 方法还提供了一些其他的参数。例如,我们可以指定当存在重复的 Key 时应该如何处理,通过传入一个合并函数来解决冲突。

下面是一个带有 Key 冲突处理的示例代码:

import java.util.*;
import java.util.stream.Collectors;

public class StreamCollectExample {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "orange", "apple");

        Map<String, Integer> fruitLengthMap = fruits.stream()
                .collect(Collectors.toMap(
                        fruit -> fruit,                   // Key 映射函数
                        fruit -> fruit.length(),          // Value 映射函数
                        (length1, length2) -> length1    // Key 冲突处理函数
                ));

        System.out.println(fruitLengthMap);
    }
}

在上述代码中,我们在 toMap() 方法的第三个参数位置上传入了一个合并函数 (length1, length2) -> length1。该函数会在遇到重复的 Key 时选择保留第一个 Key,并忽略后续的 Key。

输出结果如下:

{orange=6, banana=6, apple=5}

可以看到,在 Key 冲突时,只保留了第一个出现的 Key,其他的 Key 被忽略。

通过使用 Stream API 的 collect() 方法,我们可以非常方便地将集合收集为 Map 对象,并且还可以自定义 Key 和 Value 的映射函数以及处理冲突的方式。这样我们能够更加灵活地处理集合数据,提高代码的可读性和效率。

以上就是关于 Java 8 中使用 collect()

Java 8 이전에는 컬렉션을 Map 객체로 변환하려면 지루한 순회 및 추가 작업을 사용해야 했습니다. Java 8에서는 Stream API의 collect() 메서드를 사용하여 이 목표를 보다 편리하게 달성할 수 있습니다. 🎜🎜 collect() 메서드는 Stream API의 종료 작업 중 하나이며 수집 메서드를 지정하는 Collector 매개변수를 받습니다. Map 객체로 수집하는 경우 Collectors.toMap() 메서드를 사용하여 수집할 수 있습니다. 🎜🎜다음은 collect() 메소드를 사용하여 컬렉션을 Map 객체로 수집하는 샘플 코드입니다. 🎜rrreee🎜위 코드에서는 먼저 fruits 컬렉션을 생성합니다. 세 개의 과일 코드>를 포함하고 <code>stream() 메서드를 통해 스트림으로 변환합니다. 그런 다음 collect() 메서드를 사용하고 Collectors.toMap() 메서드를 매개 변수로 전달합니다. 이 메서드는 두 개의 람다 식 매개 변수를 받아 키와 값의 매핑을 지정합니다. . 기능. 🎜🎜이 예에서 키 매핑 함수는 fruit -> Fruit입니다. 즉, 값 매핑 함수는 fruit -> ) 즉, 과일의 길이를 Value로 취합니다. 마지막으로 collect() 메서드는 지정된 매핑 함수에 따라 스트림의 요소를 처리하고 Map 객체를 반환합니다. 🎜🎜출력 결과는 다음과 같습니다. 🎜rrreee🎜보시다시피, 마침내 과일과 그 길이가 포함된 Map 객체를 얻었습니다. 🎜🎜기본 수집 기능 외에도 Collectors.toMap() 메서드는 몇 가지 다른 매개변수도 제공합니다. 예를 들어 충돌을 해결하기 위해 병합 함수를 전달하여 중복 키가 있을 때 수행해야 할 작업을 지정할 수 있습니다. 🎜🎜다음은 키 충돌 처리가 포함된 샘플 코드입니다. 🎜rrreee🎜위 코드에서는 toMap() 메서드의 세 번째 매개변수 위치(length1)에 병합 함수 를 전달했습니다. , 길이2) -> 이 기능은 중복 키가 발생할 때 첫 번째 키를 유지하고 후속 키를 무시하도록 선택합니다. 🎜🎜출력 결과는 다음과 같습니다. 🎜rrreee🎜Key 충돌이 발생하면 처음 나타나는 Key만 유지되고 나머지 Key는 무시되는 것을 확인할 수 있습니다. 🎜🎜Stream API의 <code>collect() 메소드를 사용하면 컬렉션을 Map 객체로 쉽게 수집할 수 있으며 Key와 Value의 매핑 기능과 충돌 처리 방법을 사용자 정의할 수도 있습니다. 이러한 방식으로 컬렉션 데이터를 보다 유연하게 처리하고 코드의 가독성과 효율성을 향상시킬 수 있습니다. 🎜🎜위는 Java 8에서 컬렉션을 Map 객체로 수집하기 위해 collect() 메서드를 사용하는 방법에 대한 소개 및 샘플 코드입니다. 이 글이 Stream API의 사용법을 이해하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 Java 8의 Stream API: Collect() 메소드를 사용하여 Map 객체로 컬렉션을 수집하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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