Java计算数组中元素的总和

数组元素的总和是指数组中所有元素(或数字)的总和。数组元素可以是整数(int)或十进制数字(floatdouble)。

 

方法1:使用for循环
这是一种传统且最常用的方法,其中使用for循环来迭代数组。
在每次迭代中,将当前数组元素添加到一个保存数组元素总和的变量中。
在循环开始之前,此变量被初始化为0。例如

​
public class ArraySumCalculator {
	public static void main(String[] args) {
		int[] array = { 1, 34, 67, 23, -2, 18 };
		// variable to hold sum of array elements
		int sum = 0;
		// iterate using a for loop
		for (int loopCounter = 0; loopCounter < array.length; loopCounter++) {
			// get current array element
			int element = array[loopCounter];
			// add element to sum
			sum += element;
		}
		System.out.println("Sum of array elements is: " + sum);
	}
}

​

sum += element 是的简写 sum = sum + element

上面的程序打印

数组元素的总和是:141

for该程序中的for-each循环也可以用如下所示的循环代替。

		for (int element : array) {
			sum += element;
		}

 

方法2:在Java 8使用Arrays.stream
此方法使用流概念在Java 8.呼叫引入stream上方法java.util.Arrays类供给它的阵列作为参数。此方法返回数组元素流。在此流上
调用sum方法将提供数组中元素的总和。例如

import java.util.Arrays;
import java.util.stream.IntStream;

public class ArraySumCalculator3 {

	public static void main(String[] args) {
		int[] array = { 1, 34, 67, 23, -2, 18 };
		// get stream of elements
		IntStream stream = Arrays.stream(array);
		// add the elements in stream
		int sum = stream.sum();
		System.out.println("Sum of array elements is: " + sum);
	}
}

请注意,调用stream方法返回a java.util.stream.IntStream,它是整数值的流。这是因为提供给stream方法的数组是整数数组。
如果数组的类型为double,则流将为java.util.stream.DoubleStream
上面的代码,也可以将其简化为以下一行。

int sum = Arrays.stream(array).sum();

该程序的输出与上一个相同。

 

方法3:在Java 8中使用IntStream
Java 8引入了Java 8java.util.stream.IntStream,这是一个元素序列。它有一个of以数组为参数的方法,并返回数组元素的流。返回的流上的
调用sum方法提供数组元素的总和。例如

import java.util.stream.IntStream;

public class ArraySumCalculator5 {

	public static void main(String[] args) {
		int[] array = { 1, 34, 67, 23, -2, 18 };
		// get stream of elements
		IntStream stream = IntStream.of(array);
		// add the elements in stream
		int sum = stream.sum();
		System.out.println("Sum of array elements is: " + sum);
	}
}

上面的代码可以简化为如下所示的单行代码。

int sum = IntStream.of(array).sum();

方法4:对流使用归约运算
此方法还使用来查找数组元素的总和。一旦获得流,就可以对其应用缩减。
javadocs

甲 减少 操作通过组合操作的反复应用,例如找到一组数字的总和或最大值,或累积的元素到一个列表中需要输入元件和将它们组合的一个序列到单个汇总结果。

java.util.stream.IntStream有一个带有reduce2个参数的方法。首先是所需操作的标识元素。对于加法运算,标识为0。
第二个参数是类型的参数,java.util.function.InitBinaryOperator它是一个函数接口,该函数接口具有applyAsInt将运算应用于所提供的操作数的方法。
可以使用Lambda表达式提供对此方法的实现。例子,

import java.util.stream.IntStream;

public class ArraySumCalculator7 {

	public static void main(String[] args) {
		int[] array = { 1, 34, 67, 23, -2, 18 };
		// get stream of elements
		IntStream stream = IntStream.of(array);
		// add the elements in stream using reduction
		int sum = stream.reduce(0, (element1, element2) -> element1 + element2);
		System.out.println("Sum of array elements is: " + sum);
	}
}

注意reduce方法的参数。
第一个是0,这是要添加的标识。
第二个是lambda表达式,它表示“对提供的元素应用加法运算”
此方法将遍历所有数组元素并执行这些元素的添加。
以上方法可以简化为单线。

int sum = IntStream.of(array).reduce(0, (element1, element2) -> element1 + element2);

 

    原文作者:allway2
    原文地址: https://blog.csdn.net/allway2/article/details/116309538
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞