首页 > 编程语言 >java stream map和 flatmap区别

java stream map和 flatmap区别

时间:2022-12-28 10:55:52浏览次数:67  
标签:map flatmap java Stream stream List add

区别:
map mapper返回R,flatMap mapper返回Stream<R>

官网解释

1,<R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper) 

Returns a stream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.

2,<R> Stream<R> map(Function<? super T,? extends R> mapper)

Returns a stream consisting of the results of applying the given function to the elements of this stream.

map(Function f)

接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素,返回的数据还是一个流。

 

flatMap(Function f)

接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流。

示例代码

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class MapFlatMap {
    public static void main(String[] args) {
        List<String> list1 = new ArrayList<>();
        list1.add("A");
        list1.add("B");
        List<String> list2 = new ArrayList<>();
        list2.add("C");
        list2.add("D");

        List<List<String>> list = new ArrayList<>();
        list.add(list1);
        list.add(list2);

        Stream stream1 = list.stream().map(i-> {
            List<String> listT = new ArrayList<>();
            i.stream().forEach(j->listT.add("map1>" + j));
            return listT;
        });
        stream1.forEach(System.out::println);

        System.out.println("----------------------");

        Stream stream2 = list.stream().flatMap(i->i.stream().map(j->"flatMap2>" + j));
        stream2.forEach(System.out::println);

    }
}

 

标签:map,flatmap,java,Stream,stream,List,add
From: https://www.cnblogs.com/bigjor/p/17009630.html

相关文章

  • Java HashMap原理
    HashMap是Java中用于实现映射关系的一种数据结构。它允许将一个对象(称为键)映射到另一个对象(称为值)。当需要访问值时,可以使用键来查找值。HashMap的实现原理是使用散列函数......
  • Java千问09:你真的掌握了Java语言的==吗?我看未必!
    很多程序设计语言都使用”==”来判断两个数据是否相等,我们在编程中也经常使用这个运算符,以至于对它已经熟视无睹。那么是不是任意两个数据都可以使用”==”来判断相等呢?”==......
  • Java千问10:你知道Java语言boolean类型的变量到底占多大空间吗?
    ​我们都知道,Java语言中有个boolean类型。每个boolean类型的变量中存储的是一个true或者是false的逻辑值。那么存储这个逻辑值,需要多大的空间呢?从理论上来讲,存储这个逻辑值......
  • JAVA在线看CAD图纸快速入门
    前言梦想云图开发包,支持所有DWG/CAD图纸的在线浏览、批注、坐标提取、对象选择、编辑等功能,下面讲解如何从零开始使用梦想云图开发包。在线演示网址1:​​梦想CAD控件_CAD看......
  • JAVA17使用JS ScriptEngine
    JAVA动态运算符判断要借用 js 当我写下下面代码ScriptEngineManagermanager=newScriptEngineManager();//创建脚本执行引擎Scrip......
  • Java千问05:Java语言中为byte和short类型变量赋值为啥会报错?
    咱们先来看一段很简单的Java代码这段代码非常简单,没有任何技术含量。但是,如果我们把这段代码改成下面的样子大家可以看到,我们只是用一个变量a代替了原来赋值表达式当中的常......
  • Java 提供给第三方使用接口方法
    前言相信有很多小伙伴,在日常的开发中都有遇到过需要调用第三方接口的需求吧,但是自己有没有写过接口提供给第三方使用呢,常规的都是我们调用别人的接口,但是自己需要开发接口提......
  • Java千问06:Java语言中最大的整数再加1等于多少?看完秒懂!
    ​已知Java语言中int类型所能表示的最大整数为2147483647,请问以下代码执行结果是什么?一部分人都会认为这段程序压根就无法通过编译,也有人认为,这段程序能够通过编译,但在运行......
  • Java HashMap原理
    HashMap是Java中用于实现映射关系的一种数据结构。它允许将一个对象(称为键)映射到另一个对象(称为值)。当需要访问值时,可以使用键来查找值。HashMap的实现原理是使用散列函数......
  • Java千问07:你真的会用Java的int型变量吗?有些坑你真的不知道!
    ​我们在进行Java编程的时候,使用最频繁的数据类型基本上就是int型了。平时在使用这种数据类型的过程中,我们似乎也并没有感觉到有什么太多需要注意的地方,其实int类型的变量在......