📜  Dart – 对列表进行排序(1)

📅  最后修改于: 2023-12-03 15:00:20.200000             🧑  作者: Mango

Dart - 对列表进行排序

在Dart中,我们可以通过内置的库函数以及自定义的比较方法对列表进行排序。这种排序可以针对数字,字符串,对象等各种类型。

通过内置库函数对列表进行排序

使用Dart内置的库函数List.sort可以对列表进行基本排序操作。以下是一个示例:

void main() {
  List<int> numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5];
  numbers.sort();
  print(numbers);
}

输出结果为:[1, 1, 2, 3, 4, 5, 5, 6, 9],表示列表已经按升序排序。

如果需要降序排序,可以使用List.reversed函数来实现。以下是一个示例:

void main() {
  List<int> numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5];
  numbers.sort();
  numbers = numbers.reversed.toList();
  print(numbers);
}

输出结果为:[9, 6, 5, 5, 4, 3, 2, 1, 1],表示列表已经按降序排序。

自定义比较函数对列表进行排序

在某些情况下,需要使用自定义的比较方法对列表进行排序。例如,我们可能需要根据对象的特定字段来对对象列表进行排序。以下是一个示例:

class Person {
  String name;
  int age;
  
  Person(this.name, this.age);
  
  @override
  String toString() {
    return '($name, $age)';
  }
}

void main() {
  List<Person> persons = [
    Person('Alice', 25),
    Person('Bob', 20),
    Person('Charlie', 30),
  ];
  persons.sort((a, b) => a.age.compareTo(b.age));
  print(persons);
}

输出结果为:[(Bob, 20), (Alice, 25), (Charlie, 30)],表示对象列表已经按照年龄升序排序。

需要注意的是,自定义比较函数需要返回整数类型,正数表示a>b,0表示a=b,负数表示a<b。