Stream流的思想理解图:
构成Stream流的三种方法
1.获取Stream流:创建一条流水线,并把数据放到流水线上准备进行操作
2.中间方法:流水线上的操作,一次操作完毕之后,还可以继续进行其他操作
3.终结方法:一个Stream流只能有一个终结方法,是流水线上的最后一个操作
生成Stream的方式(也就是获取方法)
1.Collection体系集合:使用默认方法stream()生成流, default Stream<E> stream()
2.Map体系集合:把Map转成Set集合,间接的生成流
3.数组:通过Arrays中的静态方法stream生成流
4.同种数据类型的多个数据:通过Stream接口的静态方法of(T... values)生成流
Stream的流中间方法
方法名 | 说明 |
---|---|
Stream<T> filter(Predicate predicate) | 用于对流中的数据进行过滤 |
Stream<T> limit(long maxSize) | 返回此流中的元素组成的流,截取前指定参数个数的数据 |
Stream<T> skip(long n) | 跳过指定参数个数的数据,返回由该流的剩余元素组成的流 |
static <T> Stream<T> concat(Stream a, Stream b) | 合并a和b两个流为一个流 |
Stream<T> distinct() | 返回由该流的不同元素(根据Object.equals(Object) )组成的流 |
运用“filter”代码示例:
//用ArrayList创建一个集合“list”
ArrayList<String> list = new ArrayList<String>();
//在即合里添加字符串
list.add("林青霞");
list.add("张曼玉");
list.add("王祖贤");
//运用filter方法进行筛选,并输出结果
list.stream().filter(s -> s.startsWith("张")).forEach(System.out::println);
System.out.println("--------");
Stream流的终结方法
方法名 | 说明 |
---|---|
void forEach(Consumer action) | 对此流的每个元素执行操作 |
long count() | 返回此流中的元素数 |
运用终结方法和运用中间方法形式类似,只需要在中间方法后面“点”出来终结方法即可,但需要注意的是,终结方法顾名思义,就是最后的方法,用完终结方法就不可以运用其他方法