Java8 IntStream,LongStream,DoubleStream

本章节我们提供一些 Java 8 中的 IntStreamLongStream 和 DoubleStream 使用范例。IntStreamLongStream 和 DoubleStream 分别表示原始 int 流、 原始 long 流 和 原始 double 流。

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

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

java.util.stream.IntStream

java.util.stream.IntStream 是一个原始整数值序列 ( sequence ) 。该流提供了许多方法可以对该流中的元素顺序执行或并行执行一些聚合操作,比如 max() 或 average()

聚合方法

方法说明
rangeClosed(a,b)返回子序列 [a,b),左闭又开。意味着包括 b 元素,增长步值为 1
range(a,b)返回子序列 [a,b),左闭右开,意味着不包括 b
sum计算所有元素的总和
sorted排序元素

这些方法使用示例如下

IntStreamDemo.java

package cn.twle.util.stream;
import java.util.stream.IntStream;
public class IntStreamDemo {
    public static void main(String[] args) {
        System.out.println("--Using IntStream.rangeClosed--");
        IntStream.rangeClosed(13, 15).map(n->n*n).forEach(s->System.out.print(s +" "));
        System.out.println("\n--Using IntStream.range--");
        IntStream.range(13,15).map(n->n*n).forEach(s->System.out.print(s +" "));
        System.out.println("\n--Sum of range 1 to 10--");
        System.out.print(IntStream.rangeClosed(1,10).sum());
        System.out.println("\n--Sorted number--");
        IntStream.of(13,4,15,2,8).sorted().forEach(s->System.out.print(s +" "));
    }
}

运行结果如下

--Using IntStream.rangeClosed--
169 196 225 
--Using IntStream.range--
169 196 
--Sum of range 1 to 10--
55
--Sorted number--
2 4 8 13 15  

LongStream

java.util.stream.LongStream 是一个原始长整型值序列 ( sequence ) 。该流提供了许多方法可以对该流中的元素顺序执行或并行执行一些聚合操作。其实,它的使用方式和 IntStream 一样,因为提供的方法也一样,我们就不做展开了,直接看范例

LongStreamDemo.java

package cn.twle.util.stream;
import java.util.stream.LongStream;
public class LongStreamDemo {
    public static void main(String[] args) {
        System.out.println("--Using LongStream.rangeClosed--");
        LongStream.rangeClosed(13, 15).map(n->n*n).forEach(s->System.out.print(s +" "));
        System.out.println("\n--Using LongStream.range--");
        LongStream.range(13,15).map(n->n*n).forEach(s->System.out.print(s +" "));
        System.out.println("\n--Sum of range 1 to 10--");
        System.out.print(LongStream.rangeClosed(1,10).sum());
        System.out.println("\n--Sorted number--");
        LongStream.of(13,4,15,2,8).sorted().forEach(s->System.out.print(s +" "));
    }
} 

输出结果如下

--Using LongStream.rangeClosed--
169 196 225 
--Using LongStream.range--
169 196 
--Sum of range 1 to 10--
55
--Sorted number--
2 4 8 13 15 

DoubleStream

java.util.stream.LongStream 是一个原始双精度浮点型序列 ( sequence ) 。该流提供了许多方法可以对该流中的元素顺序执行或并行执行一些聚合操作。它的使用方式和 IntStream 一样,提供的方法也一样,除此之外,还额外提供了几个聚合方法

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

下面的代码是 DoubleStream 类的一些简单的使用示例

package cn.twle.util.stream;
import java.util.function.DoublePredicate;
import java.util.stream.DoubleStream;
public class DoubleStreamDemo {
    public static void main(String[] args) {
        System.out.println("--Using DoubleStream.of--");
        DoubleStream.of(5.33,2.34,5.32,2.31,3.51).map(d->d*1.5).forEach(s->System.out.print(s +" "));
        System.out.println("\n--Using DoubleStream.average--");
        double val = DoubleStream.of(12.1,11.2,13.3).average().getAsDouble();
        System.out.println(val);
        System.out.println("--Using DoubleStream.max--");
        val = DoubleStream.of(12.1,11.2,13.3).max().getAsDouble();
        System.out.println(val);
        System.out.println("--Using DoubleStream.filter--");
        DoublePredicate range = d -> d > 12.11 && d < 12.99;        
        DoubleStream.of(12.1,11.2,12.3).filter(range).forEach(d->System.out.print(d));
    }
}

输出结果如下

--Using DoubleStream.of--
7.995 3.51 7.98 3.465 5.265 
--Using DoubleStream.average--
12.200000000000001
--Using DoubleStream.max--
13.3
--Using DoubleStream.filter--
12.3 

文章来源:https://www.baidu.com/link?url=dOBRMYcUnAu51Bk3RFANv7eeb1xLge4wyOn5Ag3vfFwN8Ht6AZ7bHrNH3zjZWj_K-67jrJN7Tl7Fej9bS-JSakU1LIV0mKWrdI30VSb2CS33PdN-LEEiSFWuUmg2V5eX&wd=&eqid=bc2655e200009955000000066063e831

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值