Java8新特性-Lambda表达式和Stream

Lambda表达式的出现带来了方便,某情况上极大的简化了Java代码,下面来理解下Lambda,代码可以自行查找(sorry....)。

一、Lambda表达式也叫闭包,解决了接口必须有实现类才能调用其方法的问题,Lambda表达式可以将函数式接口当作参数传入方法中,从而不通过实习那类调用接口中的方法。首先要知道什么是函数式接口,即接口中有且只有一个抽象方法,可以用注解@FunctionInterface,函数式接口是Lambda表达式的前提。

Lambda表达式的形式。(参数类型)-> { 方法体};

除了函数事接口外,还要能推断环境,即能根据参数类型推断出函数式接口,或者将Lambda表达式赋值给接口,推断出哪个函数接口;Lambda还有  ::  即方法引用。如果Lambda表达式要做的事情,已在令一个类中做过,并且此方法是静态方法,则直接用(类名称::静态方法名),此外,如果是成员方法,则用(对象名::成员方法),如System.out::println;方法引用主要用来解决重复的Lambda表达式。

二、Stream在java.util.stream.Stream中

此流区别于IO流,java8中以Stream的方式处理数据,真的是极大的方便,再说一句,真的很方便。首先我们要先知道获取流的方式,根据集合获取流,例如list.stream();还可以通过数字获取流(数组中的类型必须是引用数据类型,如Integer或者String数组),这种方式要用Stream<String> stream = Stream.of(array);

map(Lambda表达式):映射,将一个对象转化为另一个对象,把老对象映射到新对象上,例如stream.map(Integer::parseInt),将子符串转化成int类型。

forEach(Lambda表达式);是将所有的都进行遍历,Lambda表达式是一个能消费一个参数,并且不产生返回值;如stream.forEach(System.out::println)。

filter(Lambda表达式);Lambda表达式的返回值为布尔,false则过滤掉。

parallelstream(Lambda表达式);即并发流,并发流在执行速度上比普通的流速度更快,有两种方式:parallelstream()和stream().parallel()。

具体的实现代码很多,可以参考一些代码能进行更好的理解。理解不正确的地方欢迎指正大笑


猜你喜欢

转载自blog.csdn.net/code_ni/article/details/80517947