Java8新特性
一、Java8新特性
1.Lambda表达式
Lambda是匿名函数,使用它可以写出简洁,灵活的代码。
a.表达式无参数,无返回值,只有一个Lambda体
Runnable r1 = () -> log.info("hello world");
b.表达式有参数,无返回值,
Runnable r1 = (s) -> log.info(s);
c.只有一个参数时,可省略()
Runnable r1 = s -> log.info(s);
d. 两个参数,有返回值
Comparator<Integer> comp = (o1,o2) -> {
log.info("o1:{}",o1);
log.info("o2:{}",o2);
return (o1<o2)?o1:o2;
};
e.一条语句,return 和{}可省略
Comparator<Integer> comp = (o1,o2) -> (o1<o2)?o1:o2;
二、方法引用和构造器引用
1、方法引用:当要穿戴给Lambda体的操作已经有实现方法,可以直接使用方法引用(实现抽象方法的列表,必须要和方法引用的方法参数列表一致)方法引用:使用操作符“::”来将
方法和(类或者对象)分割开来
有三种情况:
a.对象::实例方法
b.类::实例方法
c.类::静态方法
三、Stream API
1.Stream API在java.util.stream包中,提供了一种高效且易于使用的处理数据方式
2.Stream特点:
*Stream自己不会存储数据
*Stream不会改变源对象
*Stream操作时延迟执行的
3.Stream操作的步骤
*Stream:要给数据源,获取一个流
*中间操作:一个中间操作连接,对数据源的数据进行处理
*终止操作:一个终止操作,执行中间操作,产生结果
创建流方式有多种:
第一种:通过集合,对于Collection接口(list,set,queue)直接调用Stream()可以获取stream
List<String> list = new ArrayList<>();
Stream<String> stringstream = list.stream();
Stream<String> parallelStream = list.parallelStream();
第二种:通过数组
Stream<String> stream = Arrays.stream(new String[]{});
第三种:Stream.of
Stream<String> stream = Stream.of("A","B","C","D");