LongStream常用方法

关于stream流式计算

rang (long startInclusive, long endExclusive)

range,需要传入开始节点和结束节点两个参数,返回的是一个有序的LongStream。包含开始节点和结束节点两个参数之间所有的参数,间隔为1。用数学区间可以表示为[ startInclusive,endExclusive)

*示例一

public class LongStreamExample {
    public static void main(String[] args) {
        //计算1到10累加的结果
        //long sum = LongStream.range(0L, 11).reduce(0,(a,b)->a+b);
        long sum = LongStream.range(0L, 11).reduce(0, Long::sum);
        System.out.println(sum);
    }
}
//结果:55

rangeClosed

rang 差别就是rangeClosed包含最后的结束节点,range不包含。

用数学区间可以表示为[startInclusive,endExclusive]

示例

public class LongStreamExample {
    public static void main(String[] args) {
        //计算1到10累加的结果
        long sum = LongStream.rangeClosed(0L, 10).reduce(0, Long::sum);
        System.out.println(sum);
    }
}
//结果55

parallel()

并行流:简单的理解就是通过并发来提升效率。

import java.util.stream.LongStream;

public class LongStreamExample {
    public static void main(String[] args) {
        test();
        test2();
    }
    public static void test(){
        long star = System.currentTimeMillis();
        long sum = LongStream.rangeClosed(0L,10_0000_0000L).parallel().reduce(0,Long::sum);
        System.out.println(sum);
        long end = System.currentTimeMillis();
        System.out.println("使用parallel流运行时间:" + (end - star));
    }
    public static void test2(){
        long star = System.currentTimeMillis();
        long sum = LongStream.rangeClosed(0L,10_0000_0000L).reduce(0,Long::sum);
        System.out.println(sum);
        long end = System.currentTimeMillis();
        System.out.println("不使用parallel流运行时间:" + (end - star));
    }
}
500000000500000000
使用parallel流运行时间:543
500000000500000000
不使用parallel流运行时间:1698

reduce(LongBinaryOperator op)

合并流的元素并产生单个值

public class LongStreamExample {
    public static void main(String[] args) {
        long[] numbers = {1, 2, 88, 4, 5, 6, 7, 8, 9, 10};
        //long max = Arrays.stream(numbers).reduce(0, (a, b) -> a > b ? a : b);
        long max = Arrays.stream(numbers).reduce(0, Long::max);
        System.out.println(max);
    }
}
//结果 88

参考教程:https://www.cnblogs.com/gaohanghang/p/12390233.html

posted @ 2021-04-28 21:01  懒鑫人  阅读(2022)  评论(0编辑  收藏  举报