새로운 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()
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!