AnyLogic
Развернуть
Размер шрифта

Выбор элемента коллекции

Чтобы выбрать конкретный элемент коллекции

AnyLogic предоставляет функции для выбора конкретного элемента из заданной коллекции.

Функция Описание
top(collection, value) Возвращает элемент с максимальным значением в заданной коллекции.
Пример: Person person = top( people, p -> p.age );. В этом примере мы получаем самый старый элемент коллекции people. Если коллекция пуста, функция вернет null.
List filter(collection, condition) Возвращает подмножество указанной коллекции: новый список элементов, удовлетворяющих заданному условию.
Примеры:
List women = filter( people, p -> p.gender == FEMALE );
List idleTrucks = filter( trucks, t -> t.inState(Idle) );
List findAll(collection, condition) Функция, идентичная следующей: filter(collection, condition).
findFirst(collection, condition) Возвращает первый элемент указанной коллекции, для которого результат вычисления заданного условия равен true. Возвращает null, если такого элемента нет или коллекция пуста.
Пример: Person person = findFirst( people, p -> p.age > 20 );.

Чтобы выбрать случайный элемент коллекции

AnyLogic предоставляет функции для выбора случайного элемента из заданной коллекции. Эти функции определены в классе UtilitiesCollection и являются глобальными (доступными из любой части модельного кода). Любую функцию из списка ниже можно вызвать, просто напечатав ее имя, без префикса с именем коллекции: randomWhere( people, p -> p.income > 10000 );.

Функция Описание
randomWhere(collection, 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(коллекция, условие). Использует указанный нестандартный генератор случайных чисел для выбора элемента.
Как мы можем улучшить эту статью?