不能弄清楚该怎么做。
我正在使用sort()和compareTo()来对按一个条件升序的列表进行排序,但是我需要使用第二个条件来对它进行排序,并在列表的开头保留奇数。
widget.tasks.sort((a,b){
return a.key.compareTo(b.key);
});
上面的代码仅对列表的属性之一进行排序。需要对第二个整数进行排序。
答案 0 :(得分:5)
此处正在运行示例复制代码并运行
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);
答案 1 :(得分:2)
更简单的方法(也不需要分配新的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]
}
如果输入列表未排序,这也将起作用。