如何为集合和函数列表创建嵌套的for循环

时间:2019-02-19 20:32:53

标签: java anylogic

我想创建一个嵌套的for循环,可以执行以下操作:

for (Collection c : collection_of_all_collections){
    for (Wait w : collection_of_all_waits){
        function(c, w);
    }
}
  • “ c个集合”包含类型为Int的项目
  • w集合包括类型为Wait的项

//注意:这些等待不是主要的,因此,我按位置将其列出为location.wait_ID

该功能将执行以下操作:

// 1-访问等待实体中的每个代理以检查参数值

// 2-如果参数值为true,则将代理索引添加到集合c

for (Agent me1 : w.waitingEntities )
    if (households(me1.getIndex()).p_HH_willing_to_change == true){
         collection0.add(households(me1.getIndex()).getIndex());
    }else{}

// 3-对于集合c中的每个项目,使代理免于等待w

for (int i : c){
    w.free(households(i));
}

1 个答案:

答案 0 :(得分:0)

这是您释放所有具有parameter = true且处于等待块中的代理的方式。...希望这是您想要的。您的算法有点混乱。

    List <Agent> trueAgents=findAll(agents,a->a.parameter && a.currentBlock() instanceof Wait);

    for(Agent a : trueAgents){
        ((Wait)a.currentBlock()).free(a);
    }

这可以简化,甚至在参数更改为true以使代理立即从等待块中释放而不需要所有这些循环的情况下发生事件……但这取决于您的模型如何工作,所以我不会去这些细节。