背景
从地图和平板地图、文字和官网介绍的话,可能也有人会觉得难以理解【包括本人】,所以今天专门花时间分析,整理如下。
首先说明名词
我的理解
map:map方法返回object。 map用此返回值替换流中的当前元素。
平面图:平面图方法返回流。 平面图用为此返回流分解的流元素替换流中的当前元素。
官方解释
map : returnsastreamconsistingoftheresultsofapplyingthegivenfunctiontotheelementsofthisstream。
返回包含指定函数应用于流中每个元素的结果的流
flat map : returnsastreamconsistingoftheresultsofreplacingeachelementofthisstreamwithecontentsofamappedstreamproducedbyaploced
返回一个流,其中包含用通过将指定的函数映射应用于每个元素而生成的映射流替换流中的每个元素的内容
举例说明
有二箱鸡蛋,每箱5个,现在要把鸡蛋加工成煎蛋,然后分给学生。
将map做的事情:箱鸡蛋分别加工成荷包蛋或放入原两箱,分为两组学生;
将flatMap做的事情:两盒鸡蛋分别加工成荷包蛋,合并成【10个荷包蛋】,分为10名学生;
完整的测试代码如下。
public class map _ flat map { liststring [ ] eggs=new ArrayList (; @beforepublicvoidinit((//第一个箱子里的鸡蛋eggs.add ) newstring ) )、(鸡蛋_1)、(鸡蛋_1)、(鸡蛋_1)、(鸡蛋_1)。//第二盒鸡蛋eggs.add(newstring[] (鸡蛋_2)、(鸡蛋_2)、(鸡蛋_2)、(鸡蛋_2) ); //自增殖组号static int group=1; //学生编号static int student=1自行繁殖/**将两盒鸡蛋分别加工成荷包蛋或放入原两盒,分成两组学生。 */@Test public void map () { eggs.stream }.map (x-arrays.stream ).map ) y ) )。 ((煎) )、Foreach ) x-system.out.println )、组(group ) : ) Arrays.tostring(x.toarray ) ) ); /*控制台打印------------组1:[荷包蛋_1、荷包蛋_1、荷包蛋_1、荷包蛋_1]组2:[荷包蛋_1] @Test public void flatMap () { eggs.stream ).flatmap ) x-Arrays.stream ).map ) y-y.replace ) )鸡/* 控制台打印------------学生1:荷包蛋_1学生2:荷包蛋_1学生:荷包蛋_1学生5:荷包蛋_1学生6:荷包蛋_1学生: