функция 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) должна соответствовать типу Comparator и обязана принимать в качестве аргументов два значения - 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);
}

Официальная документация (английский)