Java基础 Stream流的中间方法

发布时间 2023-10-19 17:04:57作者: 嘎嘎鸭2

 

举例:

filter 过滤:

ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "张三", "李四", "王五", "赵六");
list.stream().filter(new Predicate<String>() {
@Override
public boolean test(String s) {
// s 依次表示流里面的每一个数据,返回值为 true 表示当前数据留下,如果返回值为 false 表示当前数据舍弃不要
return s.startsWith("张");//返回姓张的人
}
}).forEach(s -> System.out.println(s));


limit 获取前几个元素:
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "张三", "李四", "王五", "赵六");
list.stream().limit(3).forEach(s -> System.out.println(s)); // 返回前三个元素

skip 跳过前几个元素:
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "张三", "李四", "王五", "赵六");
list.stream().skip(3).forEach(s -> System.out.println(s)); // 跳过前三个元素

concat合并两个流的方法尽可能保证 a 和 b 两个流中的数据类型是一致的。如果 a 流里的数据类型是 x,b 流里的数据类型是 y,合并后的类型就是 x 和 y 共同的父类,相当于做了一个类型的提升,提升之后无法使用子类里面的特有功能