Stream流
JDK8的一个新特性。以声明性方式(类似编写sql语句)处理数据集合。函数式编程
作用:替换for循环以及一些集合的加工操作。
以声明式的方式去处理数据。如我要过滤、我要排序、我要加工。
使用流程:
- 将集合转换为stream流。list.stream()串行(常用)或者list.parallelStream()并行。
- 操作stream流。
中间操作为对集合的处理,最终操作则是得到处理后的结果。
操作符:操作分为中间操作符和** 终止操作符**
//实体类,省略get、set方法
/**用户类*/
public class User implements Comparable<User>{
private int id;
private String username;
private int age;
//测试方法,
@SpringBootTest
class SpringBootLogstashApplicationTests {
@Test
void comparableTest() {
List<User> list=new ArrayList();
User admin = new User(10, "admin", 100);
User root = new User(2, "root", 99);
User lisi = new User(5, "lisi", 18);
int i = admin.compareTo(root);//测试实现的compare接口
list.add(admin);
list.add(root);
list.add(lisi);
System.out.println(list);
//1.将集合装换为stream流
Stream<User> stream = list.stream();
//2.操作stream流:过滤条件为年龄大于20
List<User> collect = stream.filter(b -> b.getAge()>20 && b.getId()>5).collect(Collectors.toList());
System.out.println(collect);
}
}
中间操作符
//案例准备的初始数组
List<User> list=new ArrayList();
User admin = new User(10, "admin", 100<