Java 不带循环的整数ArrayList的元素之和

Java 不带循环的整数ArrayList的元素之和,java,arraylist,Java,Arraylist,我已经浏览了一些web资源和链接,但是,如果没有循环,我无法找到整数ArrayList的元素之和。我正在寻找一个功能,将允许我在一行这样做 对于普通数组,我可以找到相同的结果,如下所示 import java.util.ArrayList; import java.util.stream.IntStream; public class sumArray { public static void main(String[] args) { int[] a = {1

我已经浏览了一些web资源和链接,但是,如果没有循环,我无法找到整数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;
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;
    }
}

您可以轻松地将
映射到
IntStream
,然后计算总和:

a1.stream().mapToInt(Integer::intValue).sum();

通过某种方式使用循环,您可以使用分治递归(或迭代)方法,因为和满足部分和属性,即和等于部分和的和可能重复的@saltandwater,您会得到什么错误?@kajacx,请参阅上面的编辑以了解错误您确定使用java 8吗?从命令行运行
java-version
,或检查java安装文件夹中的版本。流(您正在使用这些流)仅在Java8中可用。
map
隐式使用循环@尼科斯姆。我想OP不会介意的。他只是在寻找一种内置的方法。@NikosM。您在幕后总是有一些循环,因为您必须迭代所有元素才能计算总和。@Eran,谢谢您的回复。我已经尝试了上面的方法,但是我得到了一些构建错误,请参见上面的编辑。这与java版本控制有关吗?@saltandwater您必须拥有java 8。虽然这段代码可能会回答这个问题,但提供有关它如何和/或为什么解决这个问题的额外上下文将提高答案的长期价值。
al.stream().reduce(0, (x,y) -> x+y)