java1.8的特性,java1.8新特性

1.新增概念:stream、lambda、函数式编程

2.函数式接口(@functionalInterface):只包含一个方法的接口,但可以有默认(default)方法

lambda的本质是实现了函数式接口唯一方法的实现类,只有一个方法才不需要指定

3.lambda无法单独出现,需要一个函数式接口来盛放

4.forEach实现了内部迭代

外部迭代:显式地进行迭代操作,集合元素的访问由外部控制

5.几个常用迭代的时间:

for(String s : list)        : 50134

for(int i = 0; i < list.size(); i++)        : 74608

for(Iterator iterator = list.iterator; iterator.hasnext();)        : 476464

list.forEach(System.out::println)        : 1357154

list.forEach(e -> System.out.println(e))        : 87608685

6.java 1.5:泛型、注解、concurrent并发包

java 1.8:lambda表达式、stream

7.lambda表达式是语法糖,为了简化语句、配合stream使用,取代冗长的内部类定义

语法糖:编译器推断出此处需要参数列表 -> 函数体

8.new Thread( new Runnable() {

public void run() {

System.out.println("truth");

}

}).start();

Thread需要一个实现run方法的类 ---> 取消 new Runnable ---> 取消 public void run ---> () -> { }

9.Predicate:谓词

java8添加了util.function包,里面包含多个新的@functionalInterface函数式接口,所谓匿名内部类就是其一个实现

10.匿名内部类:

1.方法引用:有了实现,直接引用方法

但是有了类似Runnable()的实现,new Thread(new Runnable)和new Thread(new Runnable::run)有区别吗。。。好像运行时间会缩短

方法引用不能是一个单独的方法,必须是 “实现类::方法名“

2.lambda:函数式接口只有一个方法,编译器自动识别补全代码

11.lambda表达式又被称为闭包、匿名函数

12.map:将集合类进行转换,一一映射

reduce:将所有值合并为一个,折叠操作;max、min、sum等都是

13.申明变量:父类 = 子类实现

因为必须能够使用所申明变量的所有方法

14.lambda表达式必须使用外界的final类型变量,因为内部类使用外部变量时必须为final类型

可见,lambda是内部类具体方法的实现


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部