Как отсортировать шансы и эвены в списке дротиков - PullRequest
4 голосов
/ 06 мая 2020

Не могу понять, как это сделать.

Я использую sort () с compareTo () для сортировки списка по возрастанию по одному критерию, но мне нужно прибегнуть к нему со вторым критерием, сохраняя нечетность числа в начале списка.

widget.tasks.sort((a,b){
          return a.key.compareTo(b.key);
        });

Этот код выше просто сортирует один из атрибутов списка. Необходимость отсортировать второе целое число.

Ответы [ 2 ]

3 голосов
/ 06 мая 2020

Вот рабочий пример Скопируйте код и запустите

 List numlist = [1, 2, 3, 4, 5, 6, 7, 9, 10];

  List oddList = [];
  List evenList = [];
  List firstOddThenEven = [];

  for (final i in numlist) {
    if (i.isEven) {
      evenList.add(i);
    } else if (i.isOdd) {
      oddList.add(i);
    }
  }

  firstOddThenEven.addAll(oddList);
  firstOddThenEven.addAll(evenList);
  print(firstOddThenEven);
2 голосов
/ 06 мая 2020

Более простой подход, который также не требует выделения новых List объектов, будет:

void main() {
  final numlist = [1, 2, 3, 4, 5, 6, 7, 9, 10];

  numlist.sort((a, b) {
    if (a.isEven && !b.isEven) {
      return 1;
    } else if (b.isEven && !a.isEven) {
      return -1;
    } else {
      return a.compareTo(b);
    }
  });

  print(numlist); // [1, 3, 5, 7, 9, 2, 4, 6, 10]
}

Это также будет работать, если список ввода не отсортирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...