求和java arraylist的所有元素

23 java sum arraylist

如果我有:ArrayList<Double> m = new ArrayList<Double>(); 使用里面的double值,我该如何添加所有ArrayList元素?

public double incassoMargherita()
{
 double sum = 0;
 for(int i = 0; i < m.size(); i++)
 {          
 }
 return sum;
}
Run Code Online (Sandbox Code Playgroud)

如?

Bar*_*nka 47

两种方式:

使用索引:

double sum = 0;
for(int i = 0; i < m.size(); i++)
    sum += m.get(i);
return sum;
Run Code Online (Sandbox Code Playgroud)

使用"for each"样式:

double sum = 0;
for(Double d : m)
    sum += d;
return sum;
Run Code Online (Sandbox Code Playgroud)

  • 或使用:JAVA 8 int sum = list.stream().mapToInt(Integer::intValue).sum(); (5认同)
  • @AnandVarkeyPhilips Barranka 评论末尾的“:P”意味着她/他在开玩笑,或者半开玩笑。请参阅[表情符号列表](https://en.wikipedia.org/wiki/List_of_emoticons):*伸出舌头,厚脸皮/顽皮,吹着覆盆子*。 (3认同)
  • 你认为这是为什么?它会导致性能下降吗?更少而干净的代码,我所希望的! (2认同)

Mik*_*kov 8

Java的8+版本IntegerLongDoubleFloat

    List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5);
    List<Long> longs = Arrays.asList(1L, 2L, 3L, 4L, 5L);
    List<Double> doubles = Arrays.asList(1.2d, 2.3d, 3.0d, 4.0d, 5.0d);
    List<Float> floats = Arrays.asList(1.3f, 2.2f, 3.0f, 4.0f, 5.0f);

    long intSum = ints.stream()
            .mapToLong(Integer::longValue)
            .sum();

    long longSum = longs.stream()
            .mapToLong(Long::longValue)
            .sum();

    double doublesSum = doubles.stream()
            .mapToDouble(Double::doubleValue)
            .sum();

    double floatsSum = floats.stream()
            .mapToDouble(Float::doubleValue)
            .sum();

    System.out.println(String.format(
            "Integers: %s, Longs: %s, Doubles: %s, Floats: %s",
            intSum, longSum, doublesSum, floatsSum));
Run Code Online (Sandbox Code Playgroud)

15、15、15.5、15.5


j.j*_*lor 7

我没有测试过,但它应该工作.

public double incassoMargherita()
{
    double sum = 0;
    for(int i = 0; i < m.size(); i++)
    {
        sum = sum + m.get(i);
    }
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

  • 我总是对我的项目负责人这么说。:) (3认同)

小智 7

使用Java 8 :

double sum = m.stream()
    .mapToDouble(a -> a)
    .sum();

System.out.println(sum); 
Run Code Online (Sandbox Code Playgroud)

  • `a -&gt; a` 是一个 lambda 函数。箭头之前是参数列表(a),箭头之后是函数体(a)。大致相当于`double identity(double a) { return a }` (2认同)

The*_*ook 5

并不是很难,只需使用m.get(i)从列表中获取值即可。

public double incassoMargherita()
{
    double sum = 0;
    for(int i = 0; i < m.size(); i++)
    {
        sum += m.get(i);
    }
    return sum;
}
Run Code Online (Sandbox Code Playgroud)