Как создать вложенный цикл for для списка коллекций и функций - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу создать вложенный цикл for, который может выполнять следующие действия:

for (Collection c : collection_of_all_collections){
    for (Wait w : collection_of_all_waits){
        function(c, w);
    }
}
  • Коллекции c содержат элементы типа Int
  • В коллекцию w входят элементы типа function 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 голосов
/ 20 февраля 2019

Таким образом вы освобождаете всех своих агентов, которые имеют параметр = true и находятся в блоке ожидания .... Надеюсь, это то, что вы хотите.Ваш алгоритм немного запутан.

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

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

И это может быть еще более упрощено, создавая событие, когда параметр изменяется на true, чтобы немедленно освободить агента из блока ожидания без необходимости всех этих циклов ... ноэто зависит от того, как работает ваша модель, поэтому я не буду вдаваться в эти детали.

...