基本数据类型在高阶函数中的运用
众所周知,在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:
面试官:怎么做JDK8的内存调优?
dxyzzzzz:
继承、实现、依赖、关联、聚合、组合的联系与区别
一条游向寒江的鱼: