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

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

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

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

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

Функция Описание
<T> java.util.List<T> sortAscending(collection, value) Возвращает новый список элементов заданной коллекции с измененным порядком, значения расположены в возрастающем порядке.
Пример: List sortedByAgeAsc = sortAscending( people, p -> p.age );
<T> java.util.List<T> sortDescending(collection, value) Возвращает новый список элементов заданной коллекции с измененным порядком, значения расположены в убывающем порядке.
Пример: List sortedByIncomeDesc = sortDescending( people, p -> p.income );

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

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

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

Функция Описание
public static <T extends Comparable<? super T>> void sortAscending( List<T> list ) Сортирует элементы заданной коллекции в возрастающем порядке согласно «естественному порядку» сортировки.
Пример: sortAscending( pricesList );
В данном примере мы сортируем элементы коллекции pricesList в возрастающем порядке (при условии, что элементы данной коллекции имеют тип данных Double type и могут сравниваться напрямую).
public static <T extends Comparable<? super T>> void sortDescending( List<T> list ) Сортирует элементы заданной коллекции в возрастающем порядке согласно обратному «естественному порядку» сортировки.
Как мы можем улучшить эту статью?