Выбор отдельного агента из популяции

Agent top(популяция, значение) - Возвращает агента с максимальным значением в заданной популяции.

Пример:  Person person = top( people, p -> p.age );

В этом примере мы получаем самого старого агента из популяции people. Если популяция не содержит агентов, функция вернет null.

List filter(популяция, условие) - Возвращает подмножество из указанной популяции: новый список агентов, удовлетворяющих заданному условию.

Примеры List women = filter( people, p -> p.gender == FEMALE );

          List idleTrucks = filter( trucks, t -> t.inState(Idle) );

List findAll(популяция, условие) - Функция, идентичная следующей: filter(популяция, условие)

Agent findFirst(популяция, условие) - Возвращает первого агента из указанной популяции, для которого результат вычисления заданного условия равен true. Возвращает null, если такого элемента нет или коллекция пуста.

Пример Person person = findFirst( people, p -> p.age > 20 );