lambda flatMap使用代码示例

发布时间:2024年01月19日

flatMap() 方法常见的使用场景包括:

处理嵌套集合:当流的元素是嵌套集合时,可以使用 flatMap() 方法将嵌套的集合展开为一个扁平的流。

扁平化映射:当需要对流中的每个元素进行某种映射操作,并将多个映射结果合并为一个流时,可以使用 flatMap() 方法。

下面是几个使用 flatMap() 的示例:

示例1:处理嵌套集合

List<List<Integer>> nestedList = Arrays.asList(
        Arrays.asList(1, 2, 3),
        Arrays.asList(4, 5, 6),
        Arrays.asList(7, 8, 9)
);

List<Integer> flattenedList = nestedList.stream()
        .flatMap(List::stream)
        .collect(Collectors.toList());

System.out.println(flattenedList); // 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]

在上述示例中,nestedList 是一个嵌套的集合,我们使用 flatMap() 方法将嵌套的列表展开为一个扁平的流。

示例2:扁平化映射

List<String> words = Arrays.asList("Hello", "World");

List<String> letters = words.stream()
        .flatMap(word -> Arrays.stream(word.split("")))
        .collect(Collectors.toList());

System.out.println(letters); // 输出:[H, e, l, l, o, W, o, r, l, d]

在上述示例中,words 是一个字符串列表,我们使用 flatMap() 方法将每个字符串拆分为单个字符,并将所有字符合并为一个流。

示例3:多个流合并

List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = Arrays.asList(4, 5, 6);
List<Integer> list3 = Arrays.asList(7, 8, 9);

List<Integer> mergedList = Stream.of(list1, list2, list3)
        .flatMap(List::stream)
        .collect(Collectors.toList());

System.out.println(mergedList); // 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]

在上述示例中,我们有多个列表 list1、list2 和 list3,我们使用 Stream.of() 方法将它们合并为一个流,然后使用 flatMap() 方法将流中的每个列表展开为一个扁平的流。

这些示例展示了 flatMap() 方法的常见用法,当需要处理嵌套集合、扁平化映射或多个流合并时,可以考虑使用 flatMap() 方法来简化代码和操作。

示例4:

SysChannelCustomList sysChannelCustomList = new SysChannelCustomList();
sysChannelCustomList.setChannelCategory("文本短信、5G阅信、语音短信");
SysChannelCustomList sysChannelCustomList2 = new SysChannelCustomList();
sysChannelCustomList2.setChannelCategory("视频短信、邮箱、语音短信");
List<SysChannelCustomList> list = new ArrayList<>();
list.add(sysChannelCustomList);
list.add(sysChannelCustomList2);
List<String> collect = list.stream().flatMap(s -> Arrays.stream(s.getChannelCategory().split("、"))).collect(Collectors.toList());
System.out.println(collect);//[文本短信, 5G阅信, 语音短信, 视频短信, 邮箱, 语音短信]
文章来源:https://blog.csdn.net/weixin_44060488/article/details/135700262
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。