2013-02-21 1 views
1

В кратчайшей форме я имею в виду наименьшее количество строк java-кодов. Я хотел бы получить среднее значение элементов массива ArrayList из целочисленных значений. Например, для ArrayList ар:Самая короткая форма получения элементов ArrayList

ArrayList<Integer> ar = new ArrayList<Integer>(Arrays.asList(1,2,3,5,8,13,21)); 

Я ищу что-то вроде

ar.Average() 

или

ar.Sum() 

или

Arrays.Average(ar) 

PS. Я знаю, что мы можем сделать это в цикле. Просто ищет более короткую альтернативу;

+1

Похожих (но не точный дубликат): [«Итерируемая сумма в Java?»] (http://stackoverflow.com/q/4758341/978917) – ruakh

+1

Итак, вы ищете метод, который уже присутствует? Проверено [docs] (http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html)? –

+3

Это около 5 строк в цикле, и вы можете поместить это в метод, который вы вызываете из другого места. Вы действительно обеспокоены тем, что вы вводите один новый и короткий метод? –

ответ

0

Вы можете использовать математическую библиотеку, такую ​​как Apache Commons Math.

http://commons.apache.org/math/apidocs/index.html

Конкретно объект SummaryStaticics (http://commons.apache.org/math/apidocs/src-html/org/apache/commons/math3/stat/descriptive/SummaryStatistics.html#line.123). Хотя для чего-то вроде среднего, вероятно, не стоит импортировать библиотеку.

0

commons math library содержит mean, а также все, что вы, возможно, хотите для простой статистики. Возможно, именно то, что вы ищете?

0

Если вы уже используете Java 8:

double average = Arrays.asList(1, 2, 3, 4) 
         .stream() 
         .map(Integer::intValue) 
         .average() 
         .getAsDouble(); 
0

Строки коды является всегда довольно бессмысленной мерой, но если это то, что вы заботитесь о:

int sum=0;for(Integer i:ar)sum += i;System.out.println(sum);