![](https://img-blog.csdnimg.cn/3cd6d7ee46704748a28c3b42038c5083.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java8
文章平均质量分 93
java8 lambda、stream函数式编程
字母哥哥
百人团队技术经理。2017年度吉林省软件行业协会“最卓越程序员奖”获得者。曾就职于微软,微软MVP。华为云享专家。
展开
-
恕我直言你可能真的不会java第1篇:lambda表达式会用了么?
本文配套教学视频:B站观看地址在本号之前写过的一些文章中,笔者使用了lambda表达式语法,一些读者反映说代码看不懂。本以为java 13都已经出了,java 8中最重要特性lambda表达式大家应该都掌握了,实际上还是存在大量的程序员没有使用java8,还有的使用了java8也不会使用lambda表达式。Lambda表达式是Java 8最流行最常用的功能特性。它将函数式编程概念引入Java,函数式编程的好处在于可以帮助我们节省大量的代码,非常方便易用,能够大幅度的提高我们的编码效率。在本文中,我们将.原创 2020-06-16 11:10:28 · 2835 阅读 · 0 评论 -
恕我直言你可能真的不会java第2篇:Java Stream API?
一、什么是Java Stream API?Java Stream函数式编程接口最初是在Java 8中引入的,并且与lambda一起成为Java开发的里程碑式的功能特性,它极大的方便了开放人员处理集合类数据的效率。从笔者之前看过的调查文章显示,绝大部分的开发者使用的JDK版本是java 8,其中Java Stream和lambda功不可没。Java Stream就是一个数据流经的管道,并且在管道中对数据进行操作,然后流入下一个管道。有学过linux 管道的同学应该会很容易就理解。在没有Java Stra.原创 2020-06-17 09:05:52 · 964 阅读 · 1 评论 -
恕我直言你可能真的不会java第3篇:Stream的Filter与谓词逻辑
一、基础代码准备建立一个实体类,该实体类有五个属性。下面的代码使用了lombok的注解Data、AllArgsConstructor,这样我们就不用写get、set方法和全参构造函数了。lombok会帮助我们在编译期生成这些模式化的代码。@Data@AllArgsConstructorpublic class Employee { private Integer id; private Integer age; //年龄 private String gender; //.原创 2020-06-18 08:25:41 · 1601 阅读 · 0 评论 -
恕我直言你可能真的不会java第4篇:Stream管道流Map操作
一、回顾Stream管道流map的基础用法最简单的需求:将集合中的每一个字符串,全部转换成大写!List<String> alpha = Arrays.asList("Monkey", "Lion", "Giraffe", "Lemur");//不使用Stream管道流List<String> alphaUpper = new ArrayList<>();for (String s原创 2020-06-22 10:10:18 · 2020 阅读 · 0 评论 -
恕我直言你可能真的不会java第5篇:Stream的状态与并行操作
一、回顾Stream管道流操作通过前面章节的学习,我们应该明白了Stream管道流的基本操作。我们来回顾一下:源操作:可以将数组、集合类、行文本文件转换成管道流Stream进行数据处理中间操作:对Stream流中的数据进行处理,比如:过滤、数据转换等等终端操作:作用就是将Stream管道流转换为其他的数据类型。这部分我们还没有讲,我们后面章节再介绍。看下面的脑图,可以有更清晰的理解:二、中间操作:有状态与无状态其实在程序员编程中,经常会接触到“有状态”,“无状态”,绝大部分的人都比较蒙原创 2020-06-23 07:32:27 · 946 阅读 · 0 评论 -
恕我直言你可能真的不会java第6篇:Stream性能差?不要人云亦云
一、粉丝的反馈问:stream比for循环慢5倍,用这个是为了啥?答:互联网是一个新闻泛滥的时代,三人成虎,以假乱真的事情时候发生。作为一个技术开发者,要自己去动手去做,不要人云亦云。的确,这位粉丝说的这篇文章我也看过,我就不贴地址了,也没必要给他带流量。怎么说呢?就是一个不懂得测试的、不入流开发工程师做的性能测试,给出了一个危言耸听的结论。二、所有性能测试结论都是片面的性能测试是必要的,但针对性能测试的结果,永远要持怀疑态度。为什么这么说?性能测试脱离业务场景就是片面的性能测试。你能覆盖所原创 2020-06-24 07:49:54 · 1579 阅读 · 1 评论 -
恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合
在开始之前,我先卖个关子提一个问题:我们现在有一个Employee员工类。@Data@AllArgsConstructorpublic class Employee { private Integer id; private Integer age; //年龄 private String gender; //性别 private String firstName; private String lastName;}你知道怎么对一个Employee对象组成的原创 2020-06-28 08:05:44 · 965 阅读 · 0 评论 -
恕我直言你可能真的不会java第8篇-函数式接口
一、函数式接口是什么?所谓的函数式接口,实际上就是接口里面只能有一个抽象方法的接口。我们上一节用到的Comparator接口就是一个典型的函数式接口,它只有一个抽象方法compare。只有一个抽象方法?那上图中的equals方法不是也没有函数体么?不急,和我一起往下看!二、函数式接口的特点接口有且仅有一个抽象方法,如上图的抽象方法compare允许定义静态非抽象方法 允许定义默认defalut非抽象方法(default方法也是java8才有的,见下文)允许java.lang.Object原创 2020-06-29 08:26:09 · 916 阅读 · 0 评论 -
恕我直言你可能真的不会java第9篇-Stream元素的匹配与查找
在我们对数组或者集合类进行操作的时候,经常会遇到这样的需求,比如:是否包含某一个“匹配规则”的元素是否所有的元素都符合某一个“匹配规则”是否所有元素都不符合某一个“匹配规则”查找第一个符合“匹配规则”的元素查找任意一个符合“匹配规则”的元素这些需求如果用for循环去写的话,还是比较麻烦的,需要使用到for循环和break!本节就介绍一个如何用Stream API来实现“查找与匹配”。一、对比一下有多简单employees是10个员工对象组成的List,在前面的章节中我们已经用过多次,.原创 2020-06-30 08:10:06 · 1338 阅读 · 0 评论 -
恕我直言你可能真的不会java第10篇-集合元素归约
Stream API为我们提供了Stream.reduce用来实现集合元素的归约。reduce函数有三个参数:Identity标识:一个元素,它是归约操作的初始值,如果流为空,则为默认结果。Accumulator累加器:具有两个参数的函数:归约运算的部分结果和流的下一个元素。Combiner合并器(可选):当归约并行化时,或当累加器参数的类型与累加器实现的类型不匹配时,用于合并归约操作的部分结果的函数。注意观察上面的图,我们先来理解累加器:阶段累加结果作为累加器的第一个参数集合遍历元素作为累原创 2020-07-01 08:23:23 · 898 阅读 · 0 评论 -
恕我直言你可能真的不会java第11篇-Stream API终端操作
一、Java Stream管道数据处理操作在本号之前写过的文章中,曾经给大家介绍过 Java Stream管道流是用于简化集合类元素处理的java API。在使用的过程中分为三个阶段。在开始本文之前,我觉得仍然需要给一些新朋友介绍一下这三个阶段,如图:第一阶段(图中蓝色):将集合、数组、或行文本文件转换为java Stream管道流第二阶段(图中虚线部分):管道流式数据处理操作,处理管道中的每一个元素。上一个管道中的输出元素作为下一个管道的输入元素。第三阶段(图中绿色):管道流结果处理操作,也就原创 2020-07-02 08:09:22 · 864 阅读 · 0 评论 -
恕我直言你可能真的不会java第12篇-如何使用Stream API对Map类型元素排序
在这篇文章中,您将学习如何使用Java对Map进行排序。前几日有位朋友面试遇到了这个问题,看似很简单的问题,但是如果不仔细研究一下也是很容易让人懵圈的面试题。所以我决定写这样一篇文章。在Java中,有多种方法可以对Map进行排序,但是我们将重点介绍Java 8 Stream,这是实现目标的一种非常优雅的方法。一、什么是Java 8 Stream使用Java 8 Streams,我们可以按键和按值对映射进行排序。下面是它的工作原理:将Map或List等集合类对象转换为Stream对象使用Strea原创 2020-07-03 08:11:36 · 1056 阅读 · 0 评论 -
Java Stream函数式编程案例图文详解
导读作者计划把Java Stream写成一个系列的文章,本文只是其中一节。更多内容期待您关注我的号!一、什么是Java Stream?Java Stream函数式编程接口最初是在Java 8中引入的,并且与lambda一起成为Java开发的里程碑式的功能特性,它极大的方便了开放人员处理集合类数据的效率。从笔者之前看过的调查文章显示,绝大部分的开发者使用的JDK版本是java 8,其中Jav...原创 2019-10-23 09:29:30 · 1237 阅读 · 0 评论 -
Java Stream函数式编程图文详解(二):管道数据处理
一、Java Stream管道数据处理操作在本号之前发布的文章《Java Stream函数式编程?用过都说好,案例图文详解送给你》中,笔者对Java Stream的介绍以及简单的使用方法给大家做了介绍。在开始本文之前,我们有必要介绍一下这张Java Stream 数据处理过程图,图中主要分三个部分:将数组、集合类、文本文件转换为管道流(图中的蓝色方块的部分,在本号的上一篇文章中已经给大家...原创 2019-10-29 10:26:42 · 1614 阅读 · 0 评论 -
Java Stream函数式编程第三篇:管道流结果处理
一、Java Stream管道数据处理操作在本号之前写过的文章中,曾经给大家介绍过 Java Stream管道流是用于简化集合类元素处理的java API。在使用的过程中分为三个阶段。在开始本文之前,我觉得仍然需要给一些新朋友介绍一下这三个阶段,如图:第一阶段(图中蓝色):将集合、数组、或行文本文件转换为java Stream管道流第二阶段(图中虚线部分):管道流式数据处理操作,处理管...原创 2019-11-12 07:48:19 · 2064 阅读 · 0 评论 -
真的简单,文本文件逐行处理–用java8 Stream流的方式
本文中为大家介绍使用java8 Stream API逐行读取文件,以及根据某些条件过滤文件内容1. Java 8逐行读取文件在此示例中,我将按行读取文件内容并在控制台打印输出。Path filePath = Paths.get("c:/temp", "data.txt");//try-with-resources语法,不用手动的编码关闭流try (Stream<String> lines = Files.lines( filePath ))原创 2020-07-20 09:13:44 · 1628 阅读 · 0 评论 -
像使用SQL一样对List对象集合进行排序
在开始之前,我先卖个关子提一个问题:假设我们有一个Movie类,这个类有三个成员变量分别是starred(是否收藏), title(电影名称), rating(评分)。你知道怎么对一个Movie对象组成的List集合,先按照是否收藏字段倒序排序,再按照评分的倒序进行排序么?如果您不知道4行代码以内的解决方案(其实是1行代码就可以实现,但笔者格式化为4行),我觉得您有必要一步步的看下去。在jav...原创 2019-10-31 09:57:25 · 1128 阅读 · 0 评论 -
对比讲解lambda表达式与传统接口函数实现方式
在本号之前写过的一些文章中,笔者使用了lambda表达式语法,一些读者反映说代码看不懂。本以为java 13都已经出了,java 8中最重要特性lambda表达式大家应该都掌握了,实际上还是存在大量的程序员没有使用java8,还有的使用了java8也不会使用lambda表达式。所以,写这篇文章还是有必要的,如果您觉得我的文章对您有帮助,期待您的关注。Lambda表达式是Java 8最流行最常用...原创 2019-11-08 07:55:58 · 1747 阅读 · 0 评论 -
List集合对象去重及按属性去重的8种方法
最近在写一些关于java基础的文章,但是我又不想按照教科书的方式去写知识点的文章,因为意义不大。基础知识太多了,如何将这些知识归纳总结,总结出优缺点或者是使用场景才是对知识的升华。所以我更想把java相关的基础知识进行穿针引线,进行整体上的总结。总结java中创建并写文件的5种方式总结java从文件中读取数据的6种方法总结java创建文件夹的4种方法及其优缺点总结java中删除文件或文件夹的7种方法总结java中文件拷贝剪切的5种方式比如之前我已经写了上面的这些内容,如果对java基础知识.原创 2020-09-07 10:28:18 · 31440 阅读 · 1 评论 -
使用Java8 Stream API对Map按键或值进行排序
一、什么是Java 8 Stream使用Java 8 Streams,我们可以按键和按值对映射进行排序。下面是它的工作原理:将Map或List等集合类对象转换为Stream对象使用Streams的sorted()方法对其进行排序最终将其返回为LinkedHashMap(可以保留排序顺序)sorted()方法以Comparator作为参数,从而可以按任何类型的值对Map进行排序。...原创 2019-11-02 12:44:24 · 6079 阅读 · 1 评论