JAVA基础 Stream
Stream 流:
集合是侧重数据的存储
而stream测试数据的计算,把数据源中的数据进行流式操作
步骤:
1.获取stream
2.流式的中间操作
3.终止行为|操作
Stream是不会修改原数据流中的数据的,
中间操作每次返回新的流,流是一次性
惰性加载,延时执行。
获取Stream
1)Collection->default Stream stream() 返回以此集合为源的顺序 Stream
List ls = List.of(“aa”,“bbb”,“cccc”,“ddddd”);
Stream stream = ls.stream();
2)static Stream stream(T[] array) 返回以指定数组作为源的顺序Stream 。
Stream stream2 = Arrays.stream(new Character[]{‘a’,‘b’,‘c’,‘d’,‘e’});
3)static Stream of(T… values) 返回其元素为指定值的顺序有序流。
Stream stream3 = Stream.of(1,2,3,4,5);
中间操作
Stream stream = ls.stream();
过滤 filter
stream = stream.filter(s->{
// System.out.println(“过滤…”);
return s.length()>=3;
截取 limit
stream = stream.limit(4);
跳过 skip 去重 distinct
stream = stream.skip(2).distinct();
排序 sorted
stream = stream.sorted((e1,e2)->Integer.compare(e1.getNo(),e2.getNo()));
map faltMap
map() 接收接口作为参数,流中操作的每一个数据作为重写方法的参数传递,最终得到新的结果,返回一个 stream
map(Function<? super T,? extends R> mapper) 返回一个流,该流包含将给定函数应用于此流的元素的结果。
flatMap() 与map的区别为,如果每个结果都是一个stream,每一个流操作的数据返回成一个
stream
flatMap(Function<? super T,? extends Stream<? extends R>> mapper) 返回一个流,该流包含将此流的每个元素替换为通过将提供的映射函数应用于每个元素而生成的映射流的内容的结果。
终止行为
遍历 forEach
匹配 allMatch anyMatch noneMatch
查找 findFirst();
parallelStream() 并行流
统计count()
收集 collect(Collector)–>Collectors收集器中一些静态方法对 Collector的实现