lambda表达式的map和flatmap的区别
发表于|更新于
|浏览量:
map: 对于Stream中包含的元素使用给定的转换函数进行转换操作,新生成的Stream只包含转换生成的元素。这个方法有三个对于原始类型的变种方法,分别是:mapToInt,mapToLong和mapToDouble。这三个方法也比较好理解,比如mapToInt就是把原始Stream转换成一个新的Stream,这个新生成的Stream中的元素都是int类型。之所以会有这样三个变种方法,可以免除自动装箱/拆箱的额外消耗;
map方法示意图:
flatMap:和map类似,不同的是其每个元素转换得到的是Stream对象,会把子Stream中的元素压缩到父集合中;
flatMap方法示意图:
文章作者: 无知的小狼
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 无知的小狼!
相关推荐
2019-07-06
类加载的生命周期
类加载的生命周期是从类被加载到内存开始,知道卸载出内存为止。整个生命周期分为7个阶段:加载,验证,准备,解析,初始化,使用,卸载。其中,验证,准备,解析三部分统称为连接,具体步骤如下图所示
2019-06-30
关于weblogic11g更换jdk的问题
这边的weblogic默认的jdk的版本是jdk1.6,服务器上jdk1.6和1.7都安装的有。然后开发用的jdk的版本是1.7。虽然也很老,但是没办法,现在我们开发用的确实是jdk1.7。在这样的环境下,我们如何找到对weblogic的默认jdk进行更换呢。 通过百度和自己的动手尝试,然后具体的操作步骤如下: 登录服务器账户,然后命令行输入 1rpm -qa|grep jdk 这样服务器安装的所有jdk都可以看见了。1java-1.7-openjdk-devel-1.7.0.65-2.5.1.2.e16_5.x86_64 2、然后找到jdk1.7的安装路径,复制上面找到的jdk的名称1rpm -ql java-1.7-openjdk-devel-1.7.0.65-2.5.1.2.e16_5.x86_64 3、找到最后文件夹名字为bin的就是jdk1.7的安装路径1/usr/lib/jvm/java-1.7-openjdk-devel-1.7.0.65-2.5.1.2.e16_5.x86_64/bin 4、打开weblogic的安装目录,找到startWebLogic.sh在界...
2019-06-30
mysql根据分隔符进行字段拆分
虽然已经有很多类似的写法,我这里还是自己写一写,有些分隔符分出的列数是不固定的,这时候怎么根据分隔符拆分出多列呢12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667insert into tpems.sp_questions_bank (id, title, option_a, option_b, option_c, option_d, option_e, answer1, answer2, parse, qtpye, diff, md5, subjectId, gradeId, knowledges, area, year, paperTpye, source, fromSite, isSub, isNormal, isKonw, tiid, Similarity, isunique, md52, s_type, s_qid, s_pid, s_user_id, s_user_na...
2019-06-30
红黑树
在看jdk的HashMap的代码的时候,看到了jdk8的实现方式用到了红黑树,然后,就看了一下。 废话少讲,开始红黑树的简介。 红黑树的特性 1.每个节点或者是黑色,或者是红色。 2.根节点是黑色。 3.每个叶子节点是黑色。 [注意:这里叶子节点,是指为空的叶子节点! 4.如果一个节点是红色的,则它的子节点必须是黑色的。 5.从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。 红黑树的添加: 第一步: 将红黑树当作一颗二叉查找树,将节点插入。 第二步:将插入的节点着色为”红色”。 第三步: 通过一系列的旋转或着色等操作,使之重新成为一颗红黑树。 伪代码: 123456789101112131415161718RB-INSERT(T, z) 01 y ← nil[T] // 新建节点“y”,将y设为空节点。02 x ← root[T] // 设“红黑树T”的根节点为“x”03 while x ≠ nil[T] // 找出要插入的节点“z”...
2019-06-30
分享一个很有意思的异常
有这样一段代码: 12345678910111213try{ pageQueryResult = customerInfoImpl.getCustomList(customRequese,pageIndex,pageSize); if(pageQueryResult==null){ Exception.throwCommonException(CustomerInfoImpl.error); }}catch (Exception e){ e.printStackTrace();}``` 这里面 Exception.throwCommonException(CustomerInfoImpl.error);是自定义的弹框异常,捕捉到这个异常之后会有错误的弹框提醒,错误信息是CustomerInfoImpl.error但是实际的运行情况是执行完try之后,然后执行的是catch,然后抛出的异常就变成e.printStackTrace();显示的异常信息就变成了平台异常,没有捕捉到正确的...
2019-06-30
Objects类下面的deepEquals()方法
12345678public static boolean deepEquals(Object a, Object b) { if (a == b) return true; else if (a == null || b == null) return false; else return Arrays.deepEquals0(a, b); } 12345678910111213141516171819202122232425static boolean deepEquals0(Object e1, Object e2) { assert e1 != null; boolean eq; if (e1 instanceof Object[] && e2 instanceof Object[]) eq = deepEquals ((Object[]) e1, (...
评论
