本文主要是介绍【Java8】数值流,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
出现的情景
获取年龄,想直接通过如下代码获取年龄的总和
但是这样是不支持的。问题在于map方法生成的是Stream<T>。虽然元素是Interger类,但是Stream 接口中没有定义sum方法。原因大概是,对于Stream<Student> 这样的对象,
定义sum是没有意义的。Stream APi 还提供了原始类特化,专门用来处理数值流的方法。
原始类类型特化
Java 引入了三个原始类型特化接口来解决这个问题,IntStream ,DoubleStream,LongStream 分别将流元素转化为 int ,double,long,从而避免了暗含的装箱成本。每个接口都提供了进行数值计算的方法,比如sum,max方法等,还有在必要
时候,再把他们转化为对象流的方法。重点记住,特化的原因是解决装箱造成的复杂性。即类似于int和Integer的效率差异。
1.映射到数值流
将流转化为特化流,常用的方法 mapToInt,mapToDouble,mapToLong,这些方法和前面说的map方法的工作方式一样,只是返回的是一个特化的数值流,而不是
stream<T>, 此外,还支持max,min,average等方法。
@Testpublic void getUserInfoTest() {List<StudentEntity> initStudentList = StudentEnt
这篇关于【Java8】数值流的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!