java - AnyLogic:计算集合中所有值的总和

标签 java collections simulation anylogic agent-based-modeling

我有一个基于代理的模拟,其中有一个名为 collection_dailyInfection 的集合其中每天都会出现新感染的数量。该集合看起来有点像这样:

  • 第 1 天:0
  • 第 2 天:3
  • 第 4 天:3
  • 第 5 天:6
  • 第 6 天:1
  • 。 。 .

我现在正在尝试编写一个函数来累加任意特定日期的感染总数。例如:第 6 天-总感染数 = 0+3+3+6+1 = 13。

计算总和的语法是: double sum( collection, value ) - 返回给定集合中的值的总和。

对于我的特定示例,这将是 double sum( collection_dailyInfection, *value*) ,但我不确定应该在“值(value)”参数中放入什么。有人可以帮我吗?

最佳答案

AnyLogic 提供的用于计算集合统计信息的这些函数(方法)使用了 Java 相当高级的功能:Java 8 中添加的函数式编程内容。因此所需的语法并不明显。主帮助页面(AnyLogic 帮助 --> 参数、变量、集合 --> 集合 --> 收集集合统计信息的函数)有一个指向 UtilitiesCollection 的链接定义这些方法的类。

您有每日感染计数的集合collection_dailyInfection;假设您在 AnyLogic 中将其指定为集合类 ArrayList,元素类为 int,并且您使用循环事件来添加每个模拟日的计数。

因此,您的求和表达式应该是

sum(collection_dailyInfection, c -> c.doubleValue())

c 只是求和所在的当前元素的任意标识符(实际上,此 sum 方法正在循环遍历您的集合),而 -> 是特殊的 Java 8 函数式编程运算符。当您在 AnyLogic 中为集合内容指定 int 类型时,它们实际上存储为 Integer 对象,这些对象是 int 原语的对象版本。 (请参阅任何 Java 教科书来了解这一点。)

因此,每个条目(Integer 对象)都有一个方法 doubleValue,该方法以 double 形式返回整数值。 (AnyLogic 的 sum 函数需要“value”位为 double;即实数( float )。)

(anupam691997 的答案是忽略 AnyLogic 上下文的“纯 Java”解决方案。)

关于java - AnyLogic:计算集合中所有值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47264896/

相关文章:

java - 带空格的字符串解析

java - 比较两个相同列表时 assertEquals 失败

c# - 从列表中查找存在于另一个列表中的项目

algorithm - CUDA 粒子中的最近邻

r - R 中的泊松过程算法(更新过程角度)

java - 为什么 Rhino (jsr-223) 不对作为对象属性的字符串求值?

java - TCP 客户端/服务器属于一类

java - 如何在不使用外部类名称的情况下从内部类获取对外部类的引用?

scala - 发生错误时使用失败来破坏集合的 `find` 方法的惯用 Scala 方法是什么?

iphone - 模拟 iPhone 的低电量