Java-Stream API

Java8中有两大最为重要的改变。

第一个是 Lambda 表达式;另外一个则 是 Stream API。 

Stream API ( java.util.stream) 把真正的函数式编程风格引入到Java中。这 是目前为止对Java类库最好的补充,因为Stream API可以极大提供Java程 序员的生产力,让程序员写出高效率、干净、简洁的代码。 

Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进 行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。 使用 Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。 也可以使用 Stream API 来并行执行操作。简言之,Stream API 提供了一种 高效且易于使用的处理数据的方式。

 

为什么要使用Stream API 

实际开发中,项目中多数数据源都来自于Mysql,Oracle等。但现在数据源可以更多了,有MongDB,Radis等,而这些NoSQL的数据就需要 Java层面去处理。 

Stream 和 Collection 集合的区别:Collection 是一种静态的内存数据 结构,而 Stream 是有关计算的。前者是主要面向内存,存储在内存中, 后者主要是面向 CPU,通过 CPU 实现计算。

 

 Stream的操作三个步骤

1、创建Stream

2、中间操作,对数据源进行数据处理

3、终止操作:一旦执行终止操作,就执行中间操作,产生结果之后不会再被使用

复制代码
 1 package www.exer.collection;
 2 
 3 import org.junit.Test;
 4 
 5 import java.util.Arrays;
 6 import java.util.List;
 7 import java.util.stream.IntStream;
 8 import java.util.stream.Stream;
 9 
10 //stream是对数据的运算,与CPU打交道
11 //Stream不储存元素
12 //Stream不改变对象
13 public class StreamAPITest {
14 
15     @Test
16     public void test1(){
17         //创建方式一:通过集合
18         List<Employee> employees = EmployeeData.getEmployees();
19 
20         //返回一个顺序流
21         Stream<Employee> stream = employees.stream();
22             //查询年龄小于5的员工信息
23         stream.filter(e -> e.getAge() < 5).forEach(System.out::println);
24             //截断流
25         employees.stream().limit(3).forEach(System.out::println);
26         //返回一个并行流
27         final Stream<Employee> employeeStream = employees.parallelStream();
28 
29 
30     }
31 
32     @Test
33     public void test2(){
34         //创建方式二:通过数组
35         int[] arr = new int[]{1,2,3,4};
36         IntStream stream = Arrays.stream(arr);
37 
38     }
39 
40     @Test
41     public void test3(){
42         //创建方式三 :通过Stream的of()
43         Stream<Integer> stream = Stream.of(1,2,4);
44 
45     }
46 
47 
48 }
复制代码

 

package www.exer.collection;

import org.junit.Test;

import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;

//stream是对数据的运算,与CPU打交道
//Stream不储存元素
//Stream不改变对象
public class StreamAPITest {

@Test
public void test1(){
//创建方式一:通过集合
List<Employee> employees = EmployeeData.getEmployees();

//返回一个顺序流
Stream<Employee> stream = employees.stream();
//查询年龄小于5的员工信息
stream.filter(e -> e.getAge() < 5).forEach(System.out::println);
//截断流
employees.stream().limit(3).forEach(System.out::println);
//返回一个并行流
final Stream<Employee> employeeStream = employees.parallelStream();


}

@Test
public void test2(){
//创建方式二:通过数组
int[] arr = new int[]{1,2,3,4};
IntStream stream = Arrays.stream(arr);

}

@Test
public void test3(){
//创建方式三 :通过Streamof()
Stream<Integer> stream = Stream.of(1,2,4);

}


}
posted @   Fancy[love]  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示