JDK1.8的新特性

1.JDK1.8新特性之接口

		JDK1.8之前的接口不可以有方法体,但从JDK1.8开始,接口中的方法可以带有方法体
为什么要添加这个特性?
		接口就是为了定义一个标准,这个标准要求所有的实现类实现这些抽象方法。
		但存在某些方法,所有的实现类代码都是一样的,索性就把这些代码挪到接口中。
使用的方法?
		通过default来修饰这个方法
			public interface IAnimal{
				void run();
				default void eat(){
        			System.out.println("吃");
    			}
			}
		实现类可以不必实现这个方法
			public class Person implements IAnimal {
    			@Override
    			public void run() {
        			System.out.println("人跑");
    			}
			}
		测试
			public class Test {
    			public static void main(String[] args) {
       				IAnimal a = new Person();
        			a.eat();
        			a.run();
    			}
			}

测试效果如图:
测试效果

2.JDK1.8新特性之lambda表达式

		lambda效果与匿名函数的效果类似
先决条件
		目标方法的参数是一个接口
		接口中只有一个抽象方法,且这个抽象方法不是Object里面的方法
		接口最好顶一个注解:@FunctionalInterface
使用方法
		(方法的形参) -> {方法体,如果有返回值,一定要写返回值}
		如果目标方法只有一个参数,可以省略小括号
		小括号里面的形参:类型可以省略
		如果方法体只有一行,大括号可以省略
实战代码
				Thread t = new Thread(() -> System.out.println("qazxswedc"));
       			t.start();

在这里插入图片描述

			Thread t = new Thread(() -> {
            	for (int i = 0; i < 10; i++) {
                	System.out.println(i);
            	}
        	});
        	t.start();

在这里插入图片描述

接口名抽象方法含义
Consumer< T >void accept(T t)消费者,无返回值
Supplier< T >T get();供应商,它是把数据,直接返回了
Function<T, R>R apply(T t);T:输入类型,R:输出类型,将传入的数据转变成输出的结果
Predicate< T >boolean test(T t);断言:泛型是输入数据的类型;过滤:如果返回值是true,则在容器中保留,否则删除

3.JDK1.8新特性之数据流编程

分类
	方法的返回值还是Stream:(Transformaction算子)
	方法的返回值不是Stream:(action算子)
介绍
数据流编程的处理就像是像一根带阀门的管子里注水,每次处理就是一道阀门,水流就是数据,
只有一个数据处理完成之后,才会处理另一份数据
算子介绍

transformaction算子
1.Stream filterStream = souStream.filter( (t) -> t > 50);
过滤数据,只保留值大于50的数据
2:Stream mapStream = souStream.map( (t) -> t + “”);
把输入参数,经过一个方法变成另外一个参数
3: Stream flatMapStream = souStream.flatMap( t -
{
String[] splitList = t.split("-");
List tempList = Arrays.asList(splitList);
return tempList.stream() ;
});
把输入参数,经过一个方法变成另外一个参数(stream类型)
4:Stream stream = souStream.distinct()
去重
5:Stream stream = souStream.limit(2);
取前几条数据
6:Stream stream = souStream.skip(2);
跳过前几条数据
7:Stream stream = souStream.sorted();
排序(升序)
action算子
1:stream.forEach( t -> System.out.println(t));
循环
2:Object[] arrays = stream.toArray()
将数据转为数组
3:long count = stream.count()
统计数量
4:Optional findFirst = stream.findFirst()
查找第一个元素
5:Iterator iterator = stream.iterator()
转换成迭代器
6:Optional maxOption = stream.max( (t1,t2) -> t1 - t2)
最大值,排序后获取最后一个
7::Optional minOption = stream.min( (t1,t2) -> t1 - t2)
最小值,排序后获取第一个
8:Optional reduce = stream.reduce((t1, t2) -> t1 + t2);
缩减数据,将第一个数据,第二个数据作为第一个参数,第二个参数传进去进行处理,得到一个数据,将这个数据作为第一个参数,第三个数据作为 第二个参数传入进行第二次处理,以此类推

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值