Stream 流
概述
-
Stream 流的使用
-
生成流
-
通过数据源(集合,数组等)生成流
list.stream()
-
-
中间操作
-
一个流后面可以跟随零个或多个中间操作,其目的主要是打开流,做出某种程度的数据过滤/映射,然后返回一个新的流,交给下一个操作使用
filter()
-
-
终结操作
-
一个流只能有一个终结操作,当这个操作执行后,流就被使用 “光” 了,无法再被操作
forEach()
-
-
Stream 流的生成方式
-
Stream 流常见生成方式
-
Collection 体系的集合可以使用默认方法
stream()
生成流default Stream<E> stream()
-
Map 体系的集合简介的生成流
Stream<K> keyStream = map.keySet().stream(); // Map键生成流 Stream<V> valueStream = map.values().stream(); // Map值生成流 Stream<Map.Entry<String,Integer>> entryStream = map.entrySet().stream(); // Map键值对对象生成流
-
数组可以通过 Stream 接口的静态方法
of(T... values)
生成流String[] strArray = new String[1024]; Stream<String> strArrayStream = Stream.of(strArray); // 数组生成流方式一 Stream<Integer> intStream = Stream.of(10,20,30); // 数组生成流方式二
-
Stream 流的常见中间操作
-
Stream<T> filter(Predicate predicate)
:用于对流中的数据进行过滤Predicate
接口中的方法Boolean test(T t)
:对给定的参数进行判断,返回一个布尔值
-
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 o)
)组成的流 -
Stream<T> sorted()
:返回由此流的元素组成的流,根据自然顺序排序 -
Stream<T> sorted(Comparator comparator)
:返回由该流的元素组成的流,根据提供的 Comparator 进行排序 -
<R> Stream<R> map(Function mapper)
:返回由给定函数应用于此流的元素的结果组成的流,常用于转化Function
接口中的方法R apply(T t)
-
IntStream mapToInt(ToIntFunction mapper)
:返回一个 IntStream 其中包含给定函数应用于此流的元素的结果IntStream
:表示原始 int 流ToIntFunction
接口中的方法:int applyAsInt(T value)
IntStream
中特有的方法的int sum()
:对流中的值进行求和,并返回求和结果
Stream 流的常见终结操作
void forEach(Consumer action)
:对此流的每个元素执行操作Consumer
接口中的方法void accept(T t)
:对给定的参数执行此操作
long count()
:返回此流中的元素个数
Stream 流的收集操作
R collect(Collector collector)
:该收集方法的参数是一个 Collector 接口- 工具类 Collectors 提供了具体的收集方法
public static <T> Collector toList()
:把元素收集到 List 集合中public static <T> Collector toSet()
:把元素收集到 Set 集合中public static Collector toMap(Function keyMapper,Function valueMapper)
:把元素收集到 Map 集合中
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于