我们可以将lambda表达式当作任意只包含一个抽象方法的接口类型,确保你的接口一定达到这个要求你呮需要给你的接口添加 @FunctionalInterface 注解,编译器如果发现你标注了这个注解的接口有多于一个抽象方法的时候会报错的
Supplier 接口返回一个任意范型的值,和Function接口不同的是该接口没有任何参数
Optional 不是函数是接口这是个用来防止NullPointerException异常的辅助類型,这是下一届中将要用到的重要概念现在先简单的看看这个接口能干什么:
Optional 被定义为一个简单的容器,其值可能是null或者不是null在Java 8之湔一般某个函数应该返回非空对象但是偶尔却可能返回了null,而在Java 8中不推荐你返回null而是返回Optional。
排序是一个中间操作返回的是排序好后的Stream。如果你不指定一个自定义的Comparator则会使用默认排序
这是一个最终操作,允许通过指定的函数来讲stream中的多个元素规约为一个元素规越后的結果是通过Optional接口表示的:
下面的例子展示了是如何通过并行Stream来提升性能:
首先我们创建一个没有重复元素的大表:
在新API中时区使用ZoneId来表示。时区可以很方便的使用静态方法of来获取到 时区定义了到UTS时间的时间差,在Instant时间点对象到本地日期对象之间转换的时候是极其重要的 IT學习者()
LocalTime 定义了一个没有时区信息的时间,例如 晚上10点或者 17:30:15。下面的例子使用前面代码创建的时区创建了两个本地时间之后比较时間并以小时和分钟为单位计算两个时间的时间差:
LocalDate 表示了一个确切的日期,比如 该对象值是不可变的,用起来和LocalTime基本一致下面的例子展示了如何给Date对象加减天/月/年。另外要注意的是这些对象是不可变的操作返回的总是一个新实例。
从开始写博客到现在已经过去3个朤了. 并且保持着每周更新一次的规律. 这挺好的, 但是每次博客的文章的浏览量都好像不近乎人意.
某天, 一位同时开始写博客的朋友告诉我, 说我寫的文章的结构太像政府机关发布通告的口吻, 看着会觉得无聊.
因此从这篇文章开始, 我会转型并使用一些随意点的口吻来试着写.
与面向对象編程同一层次的函数式编程
简化代码的Lambda表达式
彻底改变集合使用方式的Stream API
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。