java8
最多的两个特性是lambda和stream
1> lambda用来解决匿名类问题, 适用于集合排序
2> stream用来操作集合,和scala有点类似, 可以对集合做map reduce
还可以有类似SQL的groupingBy操作
--reduce() 是将集合中所有值结合进一个,Reduce类似SQL语句中的sum(), avg() 或count()
--如果要用原生的java来实现reduce很麻烦,要手动遍历集合,再做逻辑运算。 类似以前使用收集日志的功能
3> 其他还有 Optional.ofNullable 可以忽略子对象为空的情况
map(Function)
filter(Predicate)
forEach(Consumer)
Interface | Argument | Return |
Consumer<T> | T | void |
Function<T,R> | T | R |
Predicate<T> | T | boolean |
Supplier<T> | none | T |
方法引用是使用两个冒号::这个操作符号,可以用lambda表达式来取代
调试peek方法,打印出内容,有点像js中的alert
Optional
有注意到,剛剛 Stream 的 findFirst 傳回的型態是 Optional 嗎?為什麼?因為也許過濾完每一行之後,沒有符合的條件。
那為什麼不傳回 null?嗯?Java 開發者最熟悉的 Exception 之一 NullPointerException 應該足以解釋傳回 Optional 而不是 null,JSR166 Java 並行 API 領導者 Doug Lea 討厭 null,快速排序發明者、圖靈獎得主 Tony Hoare 甚至說,null 的使用造成了數十億美元的損失。
Stream API 中有幾個方法都傳回 Optional,像是 findAny、findFirst、max、min、reduce 等方法。
max sum 就是reduce的一部分
sum() reduce(0,(a,b)->a+b)
max() reduce((max,len)->len>max?len:max)
collect是一种高级的reduce
可以用来groupby
分享到:
相关推荐
JDK8特性(Lambda表达式+StreamAPI的简单使用示例代码)
jdk8新特性,百度云盘。jdk8新特性,百度云盘。jdk8新特性,百度云盘。
JDK8新特性(pdf版)
jdk8新特性.md
根据尚硅谷JDK8的课程讲解,深入理解后整理而出的JDK8笔记手册。可以从入门到精通的掌握JDK8新特性
Jdk8新特性例子,内容包含 接口默认方法, 函数引用, java.util.stream api 和java.time api map的新增方法等。例子采用记事本编写,下载者需自行下载jdk8安装并配置好环境,编译(javac)运行(java)
# jdk7新特性 ## try-with-resources 是一种声明了`一种或多种资源的try语句`。资源是指在程序用完了之后必须要关闭的对象。try-with-resources语句保证了每个声明了的`资源在语句结束的时候都会被关闭`。任何实现...
JDK8十大新特性详解,仅做参考,希望大家相互学习
jdk8新特性,有兴趣的同学可以下载看看
jdk8新特性
[JAVA教程] 张老师JDK8实战视频教程 51集JDK8专业标准学习课程 全新JDK新特性与实战教学
JDK8新特性
本课程专门针对JDK8-15新特性进行一一讲解,每个新特性都进行案例演示,通俗易懂易学习。 讲解方式: 课程讲解通俗易懂,课程重点剖析模块化系统、交互式编程。 课程内容: 课程讲解通俗易懂,课程重点剖析模块化...
1.1 JDK7新特性<一>概述 . . . . . . . . . . . . . . 1.2 JDK7新特性<二> 语法 . . . . . . . . . . . . . 1.3 JDK7新特性<三> JDBC4.1 . . . . . . . . . . 1.4 JDK7新特性<四> NIO2.0 文件系统 . . . 1.5 JDK...
jdk8新特性演示demo,主要包含lambda表达式的使用,方法引用的使用,stream流式操作的使用等演示demo,然后就么有了
Jdk8新特性 Jdk9新特性 jdk10新特性 jdk11新特性 jdk12新特性 jdk13新特性 Jdk14新特性 Jdk新特性 总结的不全,还请各位同学补充。 Jdk8新特性 Lambda / 方法引用 接口新增default方法 Stream API Optional API 新...
jdk8 新特性stream 和lambda表达式Demo