gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:00:48 25 4
gpt4 key购买 nike

我有一个基于代理的模拟,其中有一个名为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com