Java8 特性笔记(五) NumercStream

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jeekmary/article/details/88092998
标题中的NumercStream是什么意思呢,今天我们说的是Stream的具体化,

之前我们在操作的时候都是用的Stream,当然没有错,但是当我们操作Int类型的数据如:

Stream<Integer> stream = Arrays.stream(new Integer[]{1,2,3,4,5,6,7,8});
Integer result = stream.reduce(0, Integer::sum);

然而在我们实际开发中我们会发现,如果是这种情况下我们用的不是这个Stream 而是IntStream,到底是什么呢,可以这样 理解, InteStream是操作int类型的,类型是4字节32位的,比较节约内存,因此一般用IntStream,那怎么用呢,接下来看操作

Stream<Integer> stream = Arrays.stream(new Integer[]{1,2,3,4,5,6,7,8});
IntStream intstream = stream.mapToInt(i->i.intValue());
//在intStream的中有很多简便的方法供我们选择

int  result = instream.filter(i ->i>3).sum();
//那如果我又想转到Stream呢,怎么操作,也有办法
Stream<Integer> boxed = intStream.boxed();

例子:实现勾股定律

int a = 9;
// 1...100
IntStream.rangeClosed(1,1000).filter(b -> Math.sqrt(a*a+b*b)%1==0);
intStream.forEach(System.out::println)
//上面两步操作可以查看在100以内和9 在平方和再开发的情况下能是整数的情况
IntStream.rangeClosed(1,1000)
.filter(b -> Math.sqrt(a*a+b*b)%1==0)
.boxed().map(x->new Int[a,x,(int)Math.sqrt(a*a+b*b)])

注意 上面的boxed是装箱操作也就是将IntStream转为Stream

在这里提示大家 其实 DoubleStream 等都是类似的,这里讲了IntStream其他的我相信大家都能自己写出来,好了,到了这里关于Stream的基础说明基本上告一段落了,后面我会继续更新有关Optional的相关知识,这些都是相关联的一些java8特性

猜你喜欢

转载自blog.csdn.net/jeekmary/article/details/88092998