首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
java基础、集合、并发系列文章
程序那些事
创建于2021-08-26
订阅专栏
java基础、集合、并发系列文章
等 24 人订阅
共88篇文章
创建于2021-08-26
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
java 8中构建无限的stream
这里我们可以构建一个无限的stream,然后调用limit方法来限定返回的数目。 上面的例子中,我们通过调用Stream.iterate方法,创建了一个0,1,2,3,4....的无限stream。 然后调用limit(10)来获取其中的前10个。最后调用collect方法将其…
java 8中 predicate chain的使用
Predicate是一个FunctionalInterface,代表的方法需要输入一个参数,返回boolean类型。通常用在stream的filter中,表示是否满足过滤条件。 上面的例子很基础了,这里就不多讲了。 上面的例子中,我们又添加了一个filter,在filter又添…
JDK 15 JAVA 15的新特性展望
伴随着2020的寒冬和新冠病毒的肆虐,JAVA迎来了久未已久的JAVA 14。自从2017年JAVA 9发布之后,JAVA的发布版本跟上了敏捷开发的步伐,小步快跑,Java平台发布节奏已从每3年以上的主要版本转变为每6个月发布一次功能。现在,每年的3月和9月都会发布新的版本功能…
怎么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中创建一个自定义的collector
在之前的java collectors文章里面,我们讲到了stream的collect方法可以调用Collectors里面的toList()或者toMap()方法,将结果转换为特定的集合类。 今天我们介绍一下怎么自定义一个Collector。 Collector接口需要实现su…
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关于throw Exception的一个小秘密
之前的文章我们讲到,在stream中处理异常,需要将checked exception转换为unchecked exception来处理。 将异常捕获,然后封装成为RuntimeException。 上面的类中,我们定义了一个throwException方法,接收一个Excep…
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中,虽然没有任何问题,但是代码显得非常臃肿。 接下来看看怎么对其进行改写。…
java并发Exchanger的使用
Exchanger是java 5引入的并发类,Exchanger顾名思义就是用来做交换的。这里主要是两个线程之间交换持有的对象。当Exchanger在一个线程中调用exchange方法之后,会等待另外的线程调用同样的exchange方法。 两个线程都调用exchange方法之后…
java中functional interface的分类和使用
java 8引入了lambda表达式,lambda表达式实际上表示的就是一个匿名的function。 在java 8之前,如果需要使用到匿名function需要new一个类的实现,但是有了lambda表达式之后,一切都变的非常简介。 executorService.submit…
java 8 Streams简介
今天要讲的Stream指的是java.util.stream包中的诸多类。Stream可以方便的将之前的结合类以转换为Stream并以流式方式进行处理,大大的简化了我们的编程,Stream包中,最核心的就是interface Stream 从上面的图中我们可以看到Stream继…
java内存模型(JMM)和happens-before
JMM考虑的就是什么情况下读取变量a的线程可以看到值为100。看起来这是一个很简单的问题,赋值之后不就可以读到值了吗? 但是上面的只是我们源码的编写顺序,当把源码编译之后,在编译器中生成的指令的顺序跟源码的顺序并不是完全一致的。处理器可能采用乱序或者并行的方式来执行指令(在JV…
java程序员从小工到专家成神之路(2020版)
java作为第一大编程语言,可谓源远流长,一代又一代的java程序员前仆后继走在java学习的路上。java程序员的学习之路在2020年又有什么变化呢?本文详细附上了每一个部分所需知识的教程链接地址,并会持续更新,希望能够和大家一起进步! 作为程序员当然是有门槛的,这个门槛就是…
java中有界队列的饱和策略(reject policy)
我们在使用ExecutorService的时候知道,在ExecutorService中有个一个Queue来保存提交的任务,通过不同的构造函数,我们可以创建无界的队列(ExecutorService.newCachedThreadPool)和有界的队列(ExecutorServi…
都2020年了,这5个java IDE神器你还不知道?
TIOBE的4月份编程语言排行榜出来了,java还是稳坐第一位,java最新的版本也到了13,一直以来java凭借其企业级应用的优势和大量的框架级应用俘获了大量的粉丝和企业客户。 好的IDE肯定不仅要支持java的开发,HTML,CSS,JS,移动开发一个都不能少。 IDE就是…
下一页