首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
javaStream系列
程序那些事
创建于2021-08-26
订阅专栏
java Stream系列文章
等 17 人订阅
共18篇文章
创建于2021-08-26
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
5万字:Stream和Lambda表达式最佳实践-附PDF下载
1. Streams简介 今天要讲的Stream指的是java.util.stream包中的诸多类。Stream可以方便的将之前的结合类以转换为Stream并以流式方式进行处理,大大的简化了我们的编程,Stream包中,最核心的就是interface Stream 从上面的图中…
Java中的类型推断和lambda表达式
java是强类型的编程语言,每个java中使用到的变量都需要定义它的类型,否则会编译失败。强类型语言的好处就是可以尽可能的在编译期间就发现代码中可能出现的问题,从而减少在运行时出现问题的可能性。 相对的,强类型语言的缺点就是不那么的灵活多变,写起来比较冗余。 JDK8之前,ja…
Lambda表达式和闭包Closure
我们通常讲到闭包,一般都是指在javascript的环境中。闭包是JS中一个非常重要的也非常常用的概念。闭包产生的原因就是变量的作用域范围不同。一般来说函数内部的定义的变量只有函数内部可见。如果我们想要在函数外部操作这个变量就需要用到闭包了。 在JS中,变量可以分为两种全局作用…
JDK11的新特性:HTTP API和reactive streams
在JDK11的新特性:新的HTTP API中,我们介绍了通过新的HTTP API,我们可以发送同步或者异步的请求,并获得的返回的结果。 今天我们想探讨一下这些同步或者异步请求和响应和reactive streams的关系。 reactive streams的介绍大家可以参考re…
reactive stream协议详解
Stream大家应该都很熟悉了,java8中为所有的集合类都引入了Stream的概念。优雅的链式操作,流式处理逻辑,相信用过的人都会爱不释手。 每个数据流都有一个生产者一个消费者。生产者负责产生数据,而消费者负责消费数据。如果是同步系统,生产一个消费一个没什么问题。但是如果在异…
自定义parallelStream的thread pool
之前我们讲到parallelStream的底层使用到了ForkJoinPool来提交任务的,默认情况下ForkJoinPool为每一个处理器创建一个线程,parallelStream如果没有特别指明的情况下,都会使用这个共享线程池来提交任务。 上面的例子使用的共享的thread…
java 8中构建无限的stream
这里我们可以构建一个无限的stream,然后调用limit方法来限定返回的数目。 上面的例子中,我们通过调用Stream.iterate方法,创建了一个0,1,2,3,4....的无限stream。 然后调用limit(10)来获取其中的前10个。最后调用collect方法将其…
怎么break java8 stream的foreach
我们通常需要在java stream中遍历处理里面的数据,其中foreach是最最常用的方法。 但是有时候我们并不想处理完所有的数据,或者有时候Stream可能非常的长,或者根本就是无限的。 一种方法是先filter出我们需要处理的数据,然后再foreach遍历。 那么我们如何…
java 8 stream中的Spliterator简介
Spliterator是在java 8引入的一个接口,它通常和stream一起使用,用来遍历和分割序列。 只要用到stream的地方都需要Spliterator,比如List,Collection,IO channel等等。 我们可以看到,不管是并行stream还是非并行str…
java 8 stream reduce详解和误区
Stream API提供了一些预定义的reduce操作,比如count(), max(), min(), sum()等。如果我们需要自己写reduce的逻辑,则可以使用reduce方法。 本文将会详细分析一下reduce方法的使用,并给出具体的例子。 accumulator告诉…
java stream中Collectors的用法
在java stream中,我们通常需要将处理后的stream转换成集合类,这个时候就需要用到stream.collect方法。collect方法需要传入一个Collector类型,要实现Collector还是很麻烦的,需要实现好几个接口。 于是java提供了更简单的Colle…
java 8 lambda表达式中的异常处理
java 8中引入了lambda表达式,lambda表达式可以让我们的代码更加简介,业务逻辑更加清晰,但是在lambda表达式中使用的Functional Interface并没有很好的处理异常,因为JDK提供的这些Functional Interface通常都是没有抛出异常的…
java 8 Stream中操作类型和peek的使用
java 8 stream作为流式操作有两种操作类型,中间操作和终止操作。这两种有什么区别呢? 上面的例子中,我们的本意是打印出Stream的值,但实际上没有任何输出。 一个java 8的stream是由三部分组成的。数据源,零个或一个或多个中间操作,一个或零个终止操作。 中间…
怎么在java 8的map中使用stream
Map有key,value还有表示key,value整体的Entry。 上面我们可以看到有这样几个集合:Map,Set,Collection。 我们可以通过其他几个stream来遍历map。 上面我们添加了name和age字段。 上面的例子我们通过调用isPresent来判断a…
在java 8 stream表达式中实现if/else逻辑
还记得我们在上一篇文章lambda最佳实践中提到,lambda表达式应该越简洁越好,不要在其中写臃肿的业务逻辑。 接下来我们看一个具体的例子。 上面的例子中,我们把if/else的逻辑放到了forEach中,虽然没有任何问题,但是代码显得非常臃肿。 接下来看看怎么对其进行改写。…
Lambda表达式最佳实践
Lambda表达式java 8引入的函数式编程框架。之前的文章中我们也讲过Lambda表达式的基本用法。 本文将会在之前的文章基础上更加详细的讲解Lambda表达式在实际应用中的最佳实践经验。 之前的文章我们讲到了,java在java.util.function包中定义了很多F…
java 8 Streams简介
今天要讲的Stream指的是java.util.stream包中的诸多类。Stream可以方便的将之前的结合类以转换为Stream并以流式方式进行处理,大大的简化了我们的编程,Stream包中,最核心的就是interface Stream 从上面的图中我们可以看到Stream继…
Java函数式编程和Lambda表达式
行抽象,而函数式编程是对行为进行抽象。函数式编程让程序员能够写出更加容易阅读的代码。那什么时候函数式编程呢? 函数式编程是一种编程的方法论,主要是将行为编写成一个个的函数。 函数就是对输入的值进行处理,返回另外的值。 在Java 8 中引入的Labmda表达式是函数式编程的一种…