Сумма arrayList - PullRequest
       44

Сумма arrayList

1 голос
/ 03 октября 2019

Я пытаюсь сделать среднее (моё) для столбца arrayList, но мне нужно сначала его суммировать, я не знаю, как это сделать

    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;
}

Ответы [ 4 ]

0 голосов
/ 03 октября 2019

Использование DoubleStream:

Варианты:

  1. Входные данные представляют собой массив double

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

  2. Вводится ArrayList из Integer

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

0 голосов
/ 03 октября 2019

Вот как суммировать все значения в ArrayList

ArrayList<Integer> nums = new ArrayList<>();
// Populate ArrayList
int sum = 0;
for (int num : nums) {
    sum += num;
}
// Do whatever you want with sum after
0 голосов
/ 03 октября 2019

Просто используйте усредняющий коллектор в потоках, и вам не нужно вычислять SUM и NUMBER элементов:

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;
0 голосов
/ 03 октября 2019

Вы можете использовать этот фрагмент кода: (Написано на 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()));
}   
}

Счастливое кодирование.

...