java - Java中是否有SDK函数可以将数字压入堆栈并计算平均值?

标签 java android

我尝试通过 Google 寻找答案,但我认为我使用了错误的关键字。我想做的是 - 我有一个数字(整数)的集合,当我添加新数字时,我正在计算新的平均值。我注意到,随着数组的增长,一旦元素数量达到一定数量(比如 200),计算时间就会变得明显。我想知道是否有任何内置的 SDK 函数可以用来加速我的代码性能?我将在 Android 上运行代码。

int[] numbers = new int[3];

private int average(int number){
    //some buildin operation to push in array an int?
    for(int i=0; i < numbers.length -1 ; i++){
        numbers[i]=numbers[i+1];
    }
    numbers[numbers.length -1] = number;
                    ;                
    //numbers[0] = numbers[1];
    //numbers[1] = numbers[2];
    //numbers[2] = number;

    int sum = 0;

    //any operation to get average?
    for(int i=0; i < numbers.length ; i++)
        sum = sum + numbers[i];

    //calculate average value
    double average = sum / numbers.length;

    return (int)average;
 }

最佳答案

运行平均值(整数类型)可以有效地计算为:

sum -= oldest_value;
sum += new_value;
avg = (double)sum / num_elements;

为了避免每次都通过数组移动所有元素,您应该将数组用作 circular buffer .

关于java - Java中是否有SDK函数可以将数字压入堆栈并计算平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141250/

相关文章:

java - Camel Bindy 固定长度格式 : How to use inherited classes?

java - 解析包含数组字段的 JSON 数组

java - Oracle/OJDBC BLOB 在不存在的行上更新问题?

android - 如何获取用于自定义报告的 Flurry 数据

java - HttpClient 参数未添加到执行方法中

java - while 循环是无限的,因为断点不起作用

Android ViewSwitcher 在 TableLayout 中的单元格神奇地移动和隐藏

android - 包装信息 : requestedPermissions vs permissions

android - 在 Android 模拟器中安装 Chrome for Android

javascript - 移动版 Safari 地址栏