AnyLogic предоставляет функции для выбора конкретного элемента из
заданной коллекции.
top(коллекция, value) - Возвращает элемент с максимальным значением в заданной коллекции.
List filter(коллекция, условие) - Возвращает подмножество указанной коллекции: новый список элементов, удовлетворяющих заданному условию.
List findAll(коллекция, условие) - Функция, идентичная следующей: filter(коллекция, условие)
findFirst(коллекция, условие) - Возвращает первый элемент указанной коллекции, для которого результат вычисления заданного условия равен true. Возвращает null, если такого элемента нет или коллекция пуста.
Пример: Person person = findFirst( people, p -> p.age > 20 );
Чтобы выбрать случайный элемент коллекции
randomWhere( коллекция, condition ) - Возвращает один случайно выбранный элемент из заданной коллекции, который удовлетворяет заданному условию. Если коллекция пуста, или отсутствует элемент, удовлетворяющий заданному условию, функция вернет null.
Примеры: Person wealthyPerson = randomWhere( people, p -> p.income > 10000 );
Person wealthyMan = randomWhere( people, p -> p.income > 10000 && p.sex == MALE );
В этом примере мы проверяем два условия (используем логический оператор AND &&, чтобы указать AnyLogic, что результаты вычислений обоих заданных условий должны быть равны true). Функция возвращает случайно выбранный элемент, удовлетворяющий обоим условиям.
Person wealthyYoungMan = randomWhere( people, p -> p.income > 10000 && p.sex == MALE && p.age < 21 );
Также доступна другая функция, позволяющая использовать нестандартный генератор случайных чисел вместо используемого по умолчанию:
randomWhere( collection, condition, java.util.Random r ) - Подобна randomWhere( коллекция, условие ). Использует указанный нестандартный генератор случайных чисел для выбора элемента.