延迟方法:

返回值仍然是Stream接口自身类型的方法,因此支持链式调用(除了终结方法外,其余方法均为延迟方法)

终结方法:

返回值类型不再是Stream接口自身类型的方法,因此不再支持类似StringBuilder那样的链式调用。

count 和 forEach 方法


Stream流属于管道流,只能被使用一次,第一个Stream流调用完毕方法,数据就会传到下一个Stream上,而这时第一个Stream流就已经使用完毕,就会关闭了。所以第一个Stream流就不能再调用方法了。


forEach

参数传入lambda表达式,()中填写一个字母表示集合中的每一个元素

Integer[]arr={1,2,3,4,5};
Stream.of(arr).forEach((n)-> System.out.println(n));

filter

Stream<T>filter(Predicate<?super T>predicate)

可以通过filter方法将一个流转换为另一个流

【java笔记】Stream流(3):Stream流的常用方法_java

 

Integer[]arr={1,2,3,4,5};
Stream.of(arr).filter((n)->n>3).forEach((n)-> System.out.println(n));

映射:map

如果需要将流中的元素映射到另一个流中, 可以使用map方法

<R>Stream<R>map(Function<? super T, ?extend R>mapper);

【java笔记】Stream流(3):Stream流的常用方法_静态方法_02

 

Integer[]arr={1,2,3,4,5};
Stream.of(arr).map((n)->n+"").forEach((s)-> System.out.println(s));

统计个数:count

long count()

Integer[]arr={1,2,3,4,5};
System.out.println(Stream.of(arr).count());//5

取用前几个:limit

limit方法可以对流进行截取,只取前n个

Stream<T>limit(long maxSize);

【java笔记】Stream流(3):Stream流的常用方法_后端_03

Integer[]arr={1,2,3,4,5};
Stream.of(arr).limit(4).forEach((n)-> System.out.println(n));//1,2,3,4

跳过前几个元素:skip

Stream<T>skip(long n);

【java笔记】Stream流(3):Stream流的常用方法_System_04

Integer[]arr={1,2,3,4,5};
Stream.of(arr).skip(4).forEach((n)-> System.out.println(n));

组合:concat

如果有两个流,希望合并成为一个流,那么可以使用Stream接口的静态方法concat

static<T>Stream<T>concat(Stream<? exxtends T> a,Stream<? extends T> b)

Integer[]arr={1,2,3,4,5};
     Integer[]arr1={6,7,8};
     Stream.concat(Stream.of(arr),Stream.of(arr1))
             .forEach((n)-> System.out.println(n));