Hello,我是Asscre。
今天被女同事问到:Dart如何用10行代码对List的多个元素比较排序?
我打开 Dartpad 默默写下了:
void main() {
List<Caa> _list = [
Caa(87, 11),
Caa(211, 33),
Caa(211, 66),
Caa(211, 99),
Caa(211, 2),
Caa(212, 33),
Caa(314, 22),
Caa(44, 44),
Caa(2135, 66),
Caa(626, 55),
Caa(597, 99),
Caa(3658, 88),
Caa(52969, 22),
];
_list.sort((a, b) => b.compareTo(a));
_list.forEach((Caa j) {
print(j.toMap());
});
}
class Caa implements Comparable {
int id;
int time;
Caa(this.id, this.time);
// 核心代码
@override
int compareTo(other) {
int nameComp = id.compareTo(other.id);
if (nameComp == 0) {
return -time.compareTo(other.time); // '-' for descending
}
return nameComp;
}
Map toMap() {
return {
'id': id,
'time': time,
};
}
}
输出:
算了一下,8行, 嗯,可以可以。
但是,追求多既是对的原则,Asscre考虑了一下,要是能支持设置降序就更好了!!
但,嘿嘿,让同事自己去实现去吧🤭
我是Asscre, 欢迎关注我。
最近在倒腾服务器,有兴趣的童鞋可以加入我哦。