List 如何对掷镖列表中的赔率和偶数进行排序

List 如何对掷镖列表中的赔率和偶数进行排序,list,sorting,dart,List,Sorting,Dart,我想不出怎么做 我使用sort()和compareTo()对列表按一个条件升序进行排序,但我需要使用第二个条件,在列表中保留奇数 widget.tasks.sort((a,b){ return a.key.compareTo(b.key); }); 上面的代码只是对列表的一个属性进行排序。需要对第二个整数进行排序。这里是复制代码并运行的工作示例 List numlist = [1, 2, 3, 4, 5, 6, 7, 9, 10]; List odd

我想不出怎么做

我使用sort()和compareTo()对列表按一个条件升序进行排序,但我需要使用第二个条件,在列表中保留奇数

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

上面的代码只是对列表的一个属性进行排序。需要对第二个整数进行排序。

这里是复制代码并运行的工作示例

 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);

一种更简单的方法,也不需要分配新的
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]
}
如果输入列表未排序,这也会起作用