Упорядоченный список элементов коллекции

При выполнении действий над элементами коллекции может возникнуть необходимость упорядочить их по определенному значению. 

Работа с несравнимыми элементами

Если необходимости изменять порядок элементов коллекции нет, можно получить упорядоченный список элементов с помощью следующих функций AnyLogic:

<T> java.util.List<T> sortAscending( коллекция, значение ) - Возвращает новый список элементов заданной коллекции с измененным порядком, значения расположены в возрастающем порядке.

<T> java.util.List<T> sortDescending( коллекция, значение ) - Возвращает новый список элементов заданной коллекции с измененным порядком, значения расположены в убывающем порядке.

Примеры:

List sortedByAgeAsc = sortAscending( people, p -> p.age );

List sortedByIncomeDesc = sortDescending( people, p -> p.income );

Работа со сравнимыми элементами

Объекты коллекции могут реализовывать интерфейс Comparable, позволяющий сравнивать их друг с другом и сортировать в "естественном порядке" сортировки. Элементы примитивных типов (String, Int, Double и т.д.) реализуют этот интерфейс по умолчанию. Для сортировки элементов сложных типов этот интерфейс необходимо реализовать вручную.

Для работы с коллекциями, содержащими сравнимые элементы вы можете воспользоваться следующими функциями. Обратите внимание, что все элементы таких коллекций должны реализовывать интерфейс Comparable. Вызов любой из этих функций изменяет текущую коллекцию, поэтому коллекция должна быть модифицируемой.

public static <T extends Comparable<? super T>> void sortAscending( List<T> list ) - Сортирует элементы заданной коллекции в возрастающем порядке согласно "естественному порядку" сортировки.

public static <T extends Comparable<? super T>> void sortDescending( List<T> list ) - Сортирует элементы заданной коллекции в возрастающем порядке согласно обратному "естественному порядку" сортировки.

Пример:

sortAscending( pricesList );

В данном примере мы сортируем элементы коллекции pricesList в возрастающем порядке (при условии, что элементы данной коллекции имеют тип данных Double type и могут сравниваться напрямую).