Stream 流相关方法
Stream 处理的是 集合 或者 数组
// 集合对象
Stream<T> stream();
集合对象调用可以直接获取对应当前集合存储元素的 Stream 流对象。
// 数组
Stream<T> Arrays.Stream(T[] t);
利用 Arrays 工具类对当前需要按照 Stream 流方式操作的数据进行转换操作,根据当前数组的数据类型和数据存储情况,返回一个对应的 Stream 流对象
- Stream流中skip和limit方法介绍
Stream<T> skip(long n);
限制跳过当前 Stream 流对应元素的个数,【掐头】
Stream<T> limit(long n);
限制当前 Stream 对应的元素总个数,【去尾】
import java.util.ArrayList;
public class Test01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add("f");
list.add("g");
list.add("h");
list.add("i");
list.add("j");
list.add("k");
list.add("l");
/**
* 测试skip,limit方法,
* skip方法是指跳过当前Stream流对应元素的个数也就是【掐头】
* limit 方法是限制当前Stream对应元素的总个数
*/
list.stream()
.skip(3)
.limit(7)
.forEach(System.out::println);
}
}
运行结果展示:
- Stream流中sorted方法介绍
定义一个Person类(自行实现有参无参构造方法,setter和getter方法,以及toString方法):
public class Person {
private Integer id;
private String name;
private Integer age;
private Boolean gender;
}
Stream<T> sorted();
对当前 Stream 流存储的进行排序操作,要求元素有自然顺序或者遵从 Comparable 接口,默认【升序】
import java.util.ArrayList;
public class Test02 {
public static void main(String[] args) {
ArrayList<Person> list = new ArrayList<>();
for (int i = 0; i < 5; i++){
int age = (int)(Math.random() * 50);
list.add(new Person(i + 1,"zhangsan",age,false));
}
list.stream()
.sorted((o1,o2) -> o1.getAge() - o2.getAge())
.forEach(System.out::println);
}
}
运行结果展示:
3. Stream流中filter方法介绍
Stream<T> filter();
判断过滤当前 Stream 流可以保存的数据条件,满足条件保留,不满足条件移除。
import java.util.ArrayList;
public class Test03 {
public static void main(String[] args) {
ArrayList<Person> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
int age = (int) (Math.random() * 50);
list.add(new Person(i + 1, "zhangshan", age, false));
}
list.stream()
.filter(p -> p.getAge() >= 18)
.forEach(System.out::println);
}
}
运行结果展示:
4. Stream流中map方法介绍
Stream<R> map();
完成类型转换操作。
import java.util.ArrayList;
import java.util.stream.Stream;
public class Test04 {
public static void main(String[] args) {
ArrayList<Person> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
int age = (int)(Math.random() * 50);
list.add(new Person(i + 1,"lisi",age,false));
}
/**
* Stream map 方法一般都是通过方法引用引入其他已经完成的功能模块来
* 提升代码效率 在map方法中使用Lambda完成类型转换,代码效率较低。
*/
Stream<Person> stream = list.stream();
Stream<String> stringStream = stream.map(s -> s.toString());
stringStream.forEach(System.out::println);
}
}
运行结果展示: