【问题标题】:Shortest form of getting average of an ArrayList elements获取 ArrayList 元素平均值的最短形式
【发布时间】:2013-02-21 22:59:45
【问题描述】:

最短形式是指最少的 java 代码行数。我想获得整数值的 ArrayList 项目的平均值。 例如对于 ArrayList ar

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

我正在寻找类似的东西

ar.Average()

ar.Sum()

Arrays.Average(ar)

PS。我知道我们可以循环执行。只是在寻找更短的替代方案;

【问题讨论】:

  • 相关(但不完全重复):"Iterable Sum in Java?"
  • 所以您正在寻找一种已经存在的方法?检查了docs?
  • 循环大约有 5 行,您可以将其放入从其他地方调用的方法中。您是否真的为引入一种新的、简短的方法而烦恼?
  • 我知道,但看到这是一个经典问题,我认为现在 ArrayList 或类似实用程序中应该有一些东西。
  • ArrayList 可以包含任何东西,而不仅仅是整数,因此它包含特定于数学的函数是没有意义的。

标签: java arrays arraylist average


【解决方案1】:

您可以使用数学库,例如 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)。虽然对于一般的东西,它可能不值得导入一个库。

【讨论】:

    【解决方案2】:

    commons math library 包含 mean 以及您可能想要的任何其他简单统计信息。也许正是您想要的?

    【讨论】:

      【解决方案3】:

      如果您已经在使用 Java 8:

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

      【讨论】:

        【解决方案4】:

        代码行数总是一个毫无意义的衡量标准,但如果这是你关心的:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-30
          • 2021-02-14
          • 1970-01-01
          • 1970-01-01
          • 2022-01-18
          • 2012-09-11
          相关资源
          最近更新 更多