没有循环的整数ArrayList的元素总和

时间:2015-08-19 16:03:55

标签: java arraylist

我已经浏览了一些网络资源和链接,但是,我无法在没有循环的情况下找到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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

al.stream().reduce(0, (x,y) -> x+y)