添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
坚韧的包子  ·  Tensorflow model ...·  6 天前    · 
乐观的滑板  ·  Comparing DAX ...·  1 月前    · 
眉毛粗的豆浆  ·  云书网-开启美好生活·  4 月前    · 

基本数据类型在高阶函数中的运用

众所周知,在Java中使用基本数据类型的性能和产效率远高于包装类型。由于装箱类型是对象,因此在内存中存在额外开销。比如,整型在内存中占用4 字节,整型对象却要占用 16 字节。这一情况在数组上更加严重,整型数组中的每个元素只占用基本类型的内存,而整型对象数组中,每个元素都是内存中的一个指针,指向 Java堆中的某个对象。在最坏的情况下,同样大小的数组, Integer[] 要比 int[] 多占用 6 倍内存。

将基本类型转换为装箱类型,称为装箱,反之则称为拆箱,两者都需要额外的计算开销。对于需要大量数值运算的算法来说,装箱和拆箱的计算开销,以及装箱类型占用的额外内存,会明显减缓程序的运行速度。

为了减小这些性能开销, Stream 类的某些方法对基本类型和装箱类型做了区分。Stream中的高阶函数 mapToLong 和其他类似函数即为该方面的一个尝试。在 Java 8 中,仅对整型、长整型和双浮点型做了特殊处理,因为它们在数值计算中用得最多,特殊处理后的系统性能提升效果最明显。


计算最大值、最小值、平均值、求和、计数统计

使用 mapToInt、mapToLong、mapToDouble 等高阶函数后,得到一个基于基本数据类型的流。针对这样的流,Java提供了一个摘要统计的功能(对应的类有:IntSummaryStatistics、LongSummaryStatistics 和 DoubleSummaryStatistics),如下代码所示:

* 运行入口 * @param args 运行参数 public static void main(String[] args) { toInt(); toLong(); toDouble(); private static void toInt() { IntSummaryStatistics statistics = Stream.of(1L, 2L, 3L, 4L).mapToInt(Long::intValue).summaryStatistics(); System.out.println("最大值:" + statistics.getMax()); System.out.println("最小值:" + statistics.getMin()); System.out.println("平均值:" + statistics.getAverage()); System.out.println("求和:" + statistics.getSum()); System.out.println("计数:" + statistics.getCount()); private static void toLong() { LongSummaryStatistics statistics = Stream.of(1L, 2L, 3L, 4000000000000000000L).mapToLong(Long::longValue).summaryStatistics(); System.out.println("最大值:" + statistics.getMax()); System.out.println("最小值:" + statistics.getMin()); System.out.println("平均值:" + statistics.getAverage()); System.out.println("求和:" + statistics.getSum()); System.out.println("计数:" + statistics.getCount()); private static void toDouble() { DoubleSummaryStatistics statistics = Stream.of(1, 2, 3.0, 5.2).mapToDouble(Number::doubleValue).summaryStatistics(); System.out.println("最大值:" + statistics.getMax()); System.out.println("最小值:" + statistics.getMin()); System.out.println("平均值:" + statistics.getAverage()); System.out.println("求和:" + statistics.getSum()); System.out.println("计数:" + statistics.getCount());

本文原文地址: https://blog.csdn.net/zebe1989/article/details/82692527

基本数据类型在高阶函数中的运用众所周知,在Java中使用基本数据类型的性能和产效率远高于包装类型。由于装箱类型是对象,因此在内存中存在额外开销。比如,整型在内存中占用4 字节,整型对象却要占用 16 字节。这一情况在数组上更加严重,整型数组中的每个元素只占用基本类型的内存,而整型对象数组中,每个元素都是内存中的一个指针,指向 Java堆中的某个对象。在最坏的情况下,同样大小的数组, Integ... import java .util.Scanner; public class Test_Exp1 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print( 1、基础应用(列举两种方式,其他可以类推) //第一种 求最大值 : Optional<Double> reduce = Arrays.asList(25.0, 59.0, 60.0).stream().reduce(Double::max); System.out.println(reduce.get()); //第二种 求最大值 : 1、对List集合中的Integer类型元素进行求最大,最小, 平均值 。 //Integer类型 求和 System.out.println("===========Integer类型 求和 =================="); Integer sum = list.stream().reduce(I Integer sum = list.stream().mapToInt(User::getAge).sum(); System.out.println("年龄总和:" +sum); Integer max = list.stream().mapToInt(User::getAge).max().orElse(0); System.out.println("年龄 最大:" + max); Integer mi import java .text.SimpleDateFormat; import java .util.*; import java .util.stream.Collectors; import static java .util.Comparator.comparingLong; import static java .util.stream.Colle...
### 回答1: 在Word2010中,我们可以使用自带的统计函数来求某行数值的 平均值 。在表格中选定需要 求平均值 的行,然后在菜单栏的“布局”选项卡中,点击“公式”按钮,在弹出的“公式”对话框中选择“ 平均值 ”函数,点击确定即可。 此外,还可以使用Excel工具来计算表格中的 平均值 。选定需要计算 平均值 的行列,点击菜单栏的“插入”选项卡,选择“Excel表格”,在弹出的Excel表格中使用“ 平均值 ”函数来计算所需行的 平均值 。 总之,在Word2010中计算表格中某行的 平均值 非常简单,可以使用内置的统计函数或借助Excel工具来完成。这为我们处理数据提供了很大的便利。 ### 回答2: 在Word2010中,我们可以使用“ 求和 ”和“ 计数 ”函数来计算表格中某行数值的 平均值 。首先,我们需要选中所需行的数据范围,然后点击“布局”选项卡中的“公式”按钮,选择“ 求和 ”或“ 计数 ”函数。此时会弹出“函数参数”对话框,在“范围”中选择我们选中的数据范围,并点击“确定”按钮进行计算。最后,我们可以将“ 求和 ”结果除以“ 计数 ”结果得到所需的 平均值 。此外,在“布局”选项卡中的“公式”控件下还有“ 平均值 ”和“最大/ 最小值 ”等统计函数可供选择。使用这些函数可以方便地对表格数据进行计算和分析,提高工作效率和数据可视化程度。 ### 回答3: 在Word2010的表格中求某行数值的 平均值 ,可使用的统计函数是“ 平均值 函数(AVERAGE)”。 实现方法为:选中需要计算 平均值 的那一行,然后在“插入”菜单中选择“函数”,在“函数库”中选择“统计”类别,找到“ 平均值 函数(AVERAGE)”,点击“确定”即可。也可以在公式栏中直接输入“=AVERAGE(选定单元格区域)”进行计算(如:=AVERAGE(B2:G2)表示计算B2-G2单元格区域的 平均值 )。 需要注意的是,若选中的单元格区域包含包含非数字或空单元格,该函数会自动忽略这些单元格进行计算;同时,表格中的值计算会实时更新,如果修改了选中单元格区域内的值, 平均值 也会相应改变。 总之,在Word2010中,使用 平均值 函数(AVERAGE)可以方便地计算表格中某行数值的 平均值 ,非常实用。
SecureCRT 64位/32位 8.3.3 中文破解版(附上1.解决SecureCRT乱码问题2.解决Hostname lookup failed: host not found问题) 这个每次启动CRT就要设置一下外观编码么? 我这边目前是这个问题,每次启动都要设置一下。 有一劳永逸的方法么? Java使用蔡勒公式快速计算某一天是星期几 wxyld: 我输入了100个日期测试,有30多个错的 面试官:怎么做JDK8的内存调优? dxyzzzzz: 为什么有的人配的xms 和xmx 没有配xmn啊大佬? 这会出现什么问题? 继承、实现、依赖、关联、聚合、组合的联系与区别 一条游向寒江的鱼: 写的真好,评论支持