第一章 Stream流
1.1 Stream流基本操作
类集里支持有数据的流式分析处理操作,为此专门提供了一个Stream的接口,同时Collection接口里也提供有为此接口实例化的方法:
public default Stream<E> straem()
: 获得Stream接口对象。Stream<T> filter(Predicate<? super T> predicate)
:一个断言里面写一个lambda表达式
Stream主要功能是进行数据的分析处理,同时主要是针对于集合中的数据进行分析操作:
1 | package com.itheima.demo08.Stream; |
1 | package com.itheima.demo08.Stream; |
Stream 只要是利用自身的特点实现数据的分析处理操作。
1.2 MapReduce基础模型
同样是很多的对象进行过滤,选择其中包含“强”的。并且进行商品单价和数量的处理,随后分析汇总
1 | DoubleSummaryStatistics stat = all.stream().filter((ele)->ele.getName().contains("强")).mapToDouble((orderObject)->orderObject.getPrice() * orderObject.getAmout().summaryStatistics()); |
1.3 各种类型获得Stream流的方法
1 | package com.itheima.demo02.Stream; |
1.4 常用方法
1 | void forEach(consumer<? super T> action); |
接受一个Consumer
接口函数,会将每一个流元素交给该函数进行 处理
基本使用
1 | package com.itheima.demo02.Stream; |
过滤:filter
1 | Stream<T> filter(Predicate<? super T> predicate); |
复习Predicate接口
这个接口是一个函数式接口,其中唯一的抽象方法为:
1 | boolean test(T t); |
基本使用
1 | package com.itheima.demo02.Stream; |
映射:map
1 | <R> Stream<R> map(Function<? super T, ? extends R> mapper); |
该接口需要一个Function
函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型数据。
复习Function接口
其中唯一的抽象方法为:
1 | R apply(T t); |
可以将一种T
类型转换成为R
类型,而这种转换的动作就称为映射。
基本使用
1 | package com.itheima.demo02.Stream; |
统计个数:count
1 | long count() |
返回一个long
值代表元素个数。
1 | package com.itheima.demo02.Stream; |
取用前几个: limit
1 | Stream<T> limit(long maxSize) |
1 | package com.itheima.demo02.Stream; |
跳过前几个方法:skip
1 | Stream<T> skip(long n); |
1 | package com.itheima.demo02.Stream; |
合并:concat
1 | static <T> Stream<T> concat(stream<? extends T> a, Stream<? extends T> b) |
1 | package com.itheima.demo02.Stream; |