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

AnyLogic: Calculating the sum of all values in a collection

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

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

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

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

Value 应该是一个整数,它将表示您想要的感染总数的那一天。

例如,在这种情况下,value 的值应为 6。因为您想要直到第 6 天的感染总数。

这是您想要的工作演示

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{

    public static void main (String[] args) throws java.lang.Exception
    {
        ArrayList<Integer> list;
        Scanner sc=new Scanner(System.in);
        list=new ArrayList<Integer>();  /* this list will hold all the values*/
        int total=sc.nextInt(); /* total number of values in the list */
        int value=sc.nextInt(); /* the day till which you want the total infection */

        for(int i=0;i<total;i++)  /*taking input in the list */
            list.add(sc.nextInt());

        double sum=calculateSum(list,value); /* function to compute sum*/

        System.out.println(sum);
    }

    static double calculateSum(ArrayList<Integer> list,int value)
    {
        double sum=0.0;
        for(int j=0;j<value;j++) /* calculates sum from day 1 till value*/
            sum=sum+list.get(j);
        return sum; 
    }


}

AnyLogic提供的这些用于计算集合统计信息的函数(方法)使用了Java的一个相当高级的特性:Java8中添加的函数式编程的东西。所以所需的语法不在很明显。主帮助页面(AnyLogic Help --> Parameters, Variables, Collections --> Collections --> Functions to collect statistics on a collection)有一个link到UtilitiesCollection class 其中定义了这些方法。

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

因此你的求和表达式应该是

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

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

因此,每个条目(Integer 对象)都有一个方法doubleValue,其中returns 整数值作为双精度值。 (AnyLogic 的 sum 函数需要 'value' 位为 double;即实数(浮点数)。)

(anupam691997 的回答是忽略 AnyLogic 上下文的 'pure Java' 解决方案。)