【Flutter开发技巧】同事问如何用10行代码对List的多个元素比较排序?

189 阅读1分钟

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,
    };
  }
}

输出:

image.png

算了一下,8行, 嗯,可以可以。

但是,追求多既是对的原则,Asscre考虑了一下,要是能支持设置降序就更好了!!

但,嘿嘿,让同事自己去实现去吧🤭

我是Asscre, 欢迎关注我。

最近在倒腾服务器,有兴趣的童鞋可以加入我哦。