Java8 中 IntStream,LongStream,DoubleStream

IntStreamLongStream 和 DoubleStream 分别表示原始 int 流、 原始 long 流 和 原始 double 流。

这三个原始流类提供了大量的方法用于操作流中的数据,同时提供了相应的静态方法来初始化它们自己。

这三个原始流类都在 java.util.stream 命名空间下。

IntStream 和 LongStream 方法一样
方法说明
rangeClosed(a,b)类似我们数学中[a,b]
range(a,b)类似我们数学中[a,b)
sum求和
sorted排序

 

示例:

int [] ints={1,5,2,4,8};
        System.out.println("________rangeClosed 使用_________");
        LongStream.rangeClosed(1,5).forEach(System.out::println);


        System.out.println("________range 使用_________");
        IntStream.range(0,5).forEach(System.out::println);


        System.out.println("________sum 使用_________");
        int sum = IntStream.rangeClosed(0, 5).sum();
        System.out.println(sum);


        System.out.println("________sorted 使用_________");
        IntStream.of(ints).sorted().forEach(System.out::println);

结果: 

 

DoubleStream
方法说明
average计算平均值
max查找最大值

示例:

System.out.println("________average 使用_________");
        System.out.println(DoubleStream.of(1, 5).average().getAsDouble());

        System.out.println("________sum 使用_________");
        System.out.println(DoubleStream.of(1, 5).sum());

 结果:

 求和 1~1000000000

大致有三种

第一种就是for循环,这个不用说了

第二种就是forkjoin(适用于数据量大的),自己可以去学习一下

想说一下第三种,基于流的,速度快

long start = System.currentTimeMillis();
        long reduce = LongStream.rangeClosed(0L, 1000000000L).parallel().reduce(0, Long::sum);
        System.out.println(reduce);
        long end = System.currentTimeMillis();
        System.out.println(end - start);

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值