Java8的两大特性
image.png
(1)Lambda 表达式
Lambda表达式 前面文章已经详细讲解过 lambda语法、函数式编程、常用内置接口、lambda的延迟执行优势
(2)StreamApi
说到Stream便容易想到I/O Stream,而实际上我们这里讲的Stream它是Java8中对数据处理的一种抽象描述;
我们可以把它理解为数据的管道,我们可以通过这条管道提供给我们的API很方便的对里面的数据进行复杂的操作!比如查找、过滤和映射(类似于使用SQL);
更厉害的是可以使用Stream API 来并行执行操作;
简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式,解决了已有集合类库操作上的弊端
stream接口继承自BaseStream,其中IntStream, LongStream, DoubleStream对应三种基本类型(int, long, double,注意不是包装类型),Stream对应所有剩余类型的stream视图。为不同数据类型设置不同stream接口,可以提高性能,并针对不同数据类型提供不同方法实现。那什么不把IntStream等设计成Stream的子接口?毕竟这接口中的方法名大部分是一样的。答案是这些方法的名字虽然相同,但是返回类型不同,如果设计成父子接口关系,这些方法将不能共存,因为Java不允许只有返回类型不同的方法重载。
public class StreamApi {
public static void main(String[] args) {
//筛选出名字为张三的 统计共有多少个
List <String> strings = Arrays.asList( "张三", "李斯特","里斯","张三" );
//传统方法
int count=0;
for(int i=0;i<strings.size();i++){
if(strings.get( i ).equals( "张三" )){
count++;
}
}
System.out.println("数量"+count);
//Java8方法 StreamApi
long counts = strings.stream().
//先筛选名字等于张三的
filter( e -> e.equals( "张三" ) )
//获取数量
.count();;
System.out.println(counts);
}
}
总结:从上图可以发现对于传统模式操作java集合,Java8的Stream更为优雅、简洁、代码舒适
网友评论