【问题标题】:Sum of an arrayList数组列表的总和
【发布时间】:2019-10-03 08:24:50
【问题描述】:

我正在尝试对 arrayList 的列进行平均(moy),但我需要先对其求和,我不知道该怎么做

    int sumX = 0;
    val = new ArrayList<>();
    float moy[] = new float[3];

          if (i < 100) {
                    val.add(sensorEvent.values);
                i++;
            } else {
                for (; i > 0; i--);
                {
                    sumX = ?
                    moy[0] = sumX/100;
                }
                val.clear();
                i = 0;
}

【问题讨论】:

  • 这个float moy[] new float[3]; 不是一个有效的语法。为什么一个数组的平均值会是一个数组?
  • 我们不知道列表中的类型是什么,sensorEvent.values 是什么,“arrayList 的列”也不知道 - 最好包含正确的变量声明(以及一些提示数据是什么)
  • @jhamon 抱歉,忘记了 "=" 。实际上,我正在尝试对从加速度计获得的值(浮点数)进行平均。所以我的 ArraList 中有 3 个“列”,(x, y, z)。我现在只是想获得 x 的平均值。
  • Sum of the elements ArrayList 的可能重复项
  • 我认为@CarlosHeuberger 的问题是关于sensorEvent.values 的类型(...的数组?...的列表?,对象?)

标签: java arraylist sum average


【解决方案1】:

使用DoubleStream

变体:

  1. 输入是double的数组

    double[] values = new double[] {1.1D, 2.33D, 4D}; double average = DoubleStream.of(values).average().getAsDouble();

  2. 输入是Integer 中的ArrayList

    ArrayList<Integer> values = new ArrayList<>(); values.add(1); values.add(42); values.add(-1);
    double average = values.stream().mapToDouble(value -> (double) value).average().getAsDouble();

【讨论】:

    【解决方案2】:

    可以使用这段代码sn-p:(用kotlin编写)

    fun main() {
    val s: List<Float> = listOf(1.2F, 1.4F, 5.6F) 
    // populate it with your custom list data
    var sum = 0F
    
    s.forEach { it ->
        sum+=it
    }
    println("Sum = $sum and avg = ${sum/(s.size)}")
    
    }
    

    这里是java解决方案:

    class Ideone
    {
     public static void main (String[] args) throws java.lang.Exception
     {
        List<Float> s = new ArrayList(Arrays.asList(1.2F, 1.3F, 5.4F, 6.5F));
        Float sum = 0F;
        
        for (int i=0; i< s.size(); i++) {
            sum+=s.get(i);
        }
        
    System.out.println("Sum: "+sum+" and Avg: "+sum/(s.size()));
    }   
    }
    

    【讨论】:

      【解决方案3】:

      这里是如何对 ArrayList 中的所有值求和

      ArrayList<Integer> nums = new ArrayList<>();
      // Populate ArrayList
      int sum = 0;
      for (int num : nums) {
          sum += num;
      }
      // Do whatever you want with sum after
      

      【讨论】:

        【解决方案4】:

        只需在流中使用平均收集器,您就不必计算 SUMNUMBER 个元素:

        ArrayList<Double> numbers = new ArrayList<>() {{
          add(1d);
          add(2.45d);
          add(100d);
        }};
        
        final double average = numbers.stream()
          .collect(Collectors.averagingDouble(d -> d));
        
        moy[0] = average;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多