JDK8新特性--stream流常用函数

下面挑几个比较常用的stream流函数进行一一介绍

forEach函数

 void forEach(Consumer<? super T> var1);

forEach方法的含义就是遍历整个集合,可以在foreach遍历的过程中执行对应操作

可以看到forEach需要一个consumer类型的函数接口,consumer函数接口是一个没有返回类型的接口方法,因此foreach是方法也是void返回类型。

一般使用场景

  Stream<String> stringStream = Stream.of("1", "2", "3");
  stringStream.forEach(System.out::print);

同时需要注意forEach是一个终止函数

map函数

<R> Stream<R> map(Function<? super T, ? extends R> var1);

map函数的返回类型是一个新的stream流,简单来说就是将stream流进行转化为不同类型的stream流

map函数的源码是一个function类型的函数式接口,不仅需要参数而且还会有返回值。

同时需要注意的是map函数是一个中间函数而不是终止函数,必须要搭配一个中间函数来使用才能去使用。

一般使用场景

Stream<String> stringStream = Stream.of("1", "2", "3");
stringStream.map(Integer::parseInt).forEach(System.out::print);

上述示例就是将原来的string类型的集合转化为map类型的同时调用foreach终止方法保证能够执行

Sort函数

    Stream<T> sorted();

    Stream<T> sorted(Comparator<? super T> var1);

对于stream流中含有两个sort函数一个不带参数一个带参数

其中不带参数则是基于本身类的compare方法进行排序的,如果类本身没有排序则可以通过带参数的compare来进行自定义排序

一般使用场景:

stringStream.map(Integer::parseInt).sorted((a,b)->a-b).forEach(System.out::print);

上述代码就是使用sorted并且搭配了map以及foreach方法进行简单的排序

同时sorted是一个间接方法而不是终止方法无法单独使用

reduce函数

如果需要将所有数据归纳得到为一个数据则可以使用reduce函数

  T reduce(T var1, BinaryOperator<T> var2);

对于reduce函数第一个参数代表默认值,第二个则是一个函数接口表示用来进行合并数据的逻辑

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
                .reduce(0, (a, b) -> a + b);
// 输出结果:15(0+1+2+3+4+5)

可以看出第一个参数0,表示默认值当第一次函数调用的时候则是a,集合第一个参数则是b以此类推,最终实现累加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值