我已经浏览了一些网络资源和链接,但是,我无法在没有循环的情况下找到Integer ArrayList的元素总和。我正在寻找一个允许我在一行中完成这项工作的功能。
我能够为普通数组找到相同的内容,如下所示
import java.util.ArrayList;
import java.util.stream.IntStream;
public class sumArray
{
public static void main(String[] args)
{
int[] a = {10,20,30,40,50};
int sum = IntStream.of(a).sum();
System.out.println("The sum is " + sum);
}
}
我可以编写一个用户定义的函数,如下所示
import java.util.ArrayList;
public class sumAL
{
public static void main(String[] args)
{
ArrayList<Integer> al = new ArrayList<Integer>();
al.add(1);
al.add(3);
al.add(5);
System.out.println(sum(al));
}
static int sum(ArrayList<Integer> al)
{
int value = 0;
for(int i : al)
{
value += i;
}
return value;
}
}
然而,我正在寻找内置的东西。 请指教。
编辑:我尝试了以下但是我遇到了构建错误
import java.util.ArrayList;
public class sumAL
{
public static void main(String[] args)
{
System.out.println(getVersion());
ArrayList<Integer> al = new ArrayList<Integer>();
al.add(1);
al.add(3);
al.add(5);
System.out.println(al.stream().mapToInt(Integer::intValue).sum());
}
static double getVersion () {
String version = System.getProperty("java.version");
int pos = version.indexOf('.');
pos = version.indexOf('.', pos+1);
return Double.parseDouble (version.substring (0, pos));
}
}
错误
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Integer cannot be resolved to a variable
Syntax error on tokens, delete these tokens
答案 0 :(得分:1)
您可以轻松地将Stream<Integer>
映射到IntStream
,然后计算总和:
a1.stream().mapToInt(Integer::intValue).sum();
答案 1 :(得分:1)
al.stream().reduce(0, (x,y) -> x+y)