stream流及函数式接口

Stream流

Stream流可以看做流水线,把原始数据转换为流进行一系列加工,最后收集的过程,特点:

1 . 不是数据结构,不会保存数据。
2. 不会修改原来的数据源,它会将操作后的数据保存到另外一个对象中。
3. 惰性求值,流在中间处理过程中,只是对操作进行了记录,并不会立即执行,需要等到执行终止操作的时候才会进行实际的计算。

常用的Stream流方法

名称作用方法种类
limit截取指定个数非终结方法
skip跳过指定个数非终结方法
filter对流进行过滤 筛选非终结方法
map对流进行映射处理非终结方法
concat合并流非终结方法
count统计个数终结方法
foreach逐一处理终结方法

limit

Stream<T> limit(long maxsize)		//截取maxsize个元素

skip

Stream<T> skip(long n)			//跳过n个元素

filter

Stream<T> filter(Predicate<? super T> predicate)	//对元素进行过滤

map

<R> Stream<R> map(Function<? super T, ? extends R> mapper)	//对每一个元素进行映射处理

concat

static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)	//对每一个元素进行映射处理

count

long count();

foreach

void foreach(Consumer <? super T> action)

Stream收集方法

collect(Collectors.toList());  //收集至list,返回list
collect(Collectors.toSet());   //收集至set返回set
collect(Collectors.groupingBy(function))	//根据一定条件分组

函数式接口
该接口有且仅有一个必须被重写的方法,常用函数式接口实例

Predicate<T> boolean 判断者,接收参数 T,返回布尔值	filter(Predicate....)
Consumer<T> void 消费者 接收参数,但不返回值   foreach(Consumer....)
Function<T> R	 修改者,接收T,返回R     map(Function....)
Supplier<T> T  生产者   无参数,有返回
Runnable用于制造一个任务传给线程

Lambda表达式规则

1.使用lambda表达式一定要是接口,并且有且仅有一个必须重写的方法
2.必须具备上下文推断

省略规则

1.参数的类型可以省略
2.当有且仅有一个参数时,小括号可以省略
3.当只有一条语句时,无论有无返回值,大括号,return都可以省略
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值