Библиотеки » Основная библиотека (dart:core) » List » sort
функция List::sort
Сортирует список с помощью пользовательской функции
Синтаксис
void
List.sort
([int compare(E a, E b)])
Передаваемые параметры
[int compare(E a, E b)]Возвращаемое значение
voidОписание
Метод sort
позволяет упорядочить список в соответствии с порядком, определяемый функцией сравнения int compare(E a, E b)
. Callback-функция int compare(E a, E b)
должна соответствовать типу E a
и E b
и возвращать в случае:
- a < b: целое отрицательное число,
- a = b: 0,
- a > b: целое положительное число
Если callback-функция сравнения int compare(E a, E b)
не задана, то, по умолчанию, используется функция Comparable.compare
.
Заметки
Пример
void main() {
// объявляем переменную list_sort как список целых чисел
List<int> list_sort;
// инициализируем массив с данными
list_sort = [0,1,22,33,4,5,66,77,8,9];
// сортируем массив с помощью пользовательской функции, таким образом,
// что сначала, по убыванию, идут нечетные числа, а после них следуют
// четные, но уже по возрастанию
list_sort.sort((int a, int b) {
// если оба числа четные, или не четны, то возвращаем в качестве
// результата сравнения их разницу
if ((a % 2) == (b % 2)) {
return (1 - (a % 2)*2) * (a - b);
}
// если a - четное, возвращаем 1, потому что, оно
// всегда больше нечетного, т.е. a > b
if (a % 2 == 0) {
return 1;
}
// если b - четное, возвращаем -1, потому что, что оно
// всегда больше нечетного, т.е. a < b
if (b % 2 == 0) {
return -1;
}
});
// при выводе получим массив - [77, 33, 9, 5, 1, 0, 4, 8, 22, 66]
print(list_sort);
}