[英]How can i sort list with dart?
我有这样的list = ['1','5','10','25','50','100','250'];
我像那个列表一样对列表进行排序list..sort((a, b) => a.compareTo(b);
但是返回
1 - 10 - 100 - 25 - 250 - 5 - 50
我怎样才能像那个回报一样排序
1 - 5 - 10 - 25 - 50 - 100 - 250
您必须先将 String 列表转换为 int 列表,然后才能对它们进行排序。
List<String> list = ['1', '5', '10', '25', '50', '100', '250'];
List<int> lint = list.map(int.parse).toList();
lint.sort();
print(lint);
原因是您的数字表示为String
对象,因此按字母顺序排序,而不是按值的顺序。 为此,我们需要在比较值之前将每个String
object 转换为int
object。
前面提到的解决方案有效,但您最终会得到int
对象列表,因为它在排序之前首先将List<String>
转换为List<int>
。
如果您不希望这样,您可以执行以下操作以保持数字的原始表示:
void main() {
final list = ['1', '5', '10', '25', '50', '100', '250'];
list.sort((a, b) => int.parse(a).compareTo(int.parse(b)));
print(list); // [1, 5, 10, 25, 50, 100, 250]
}
如果列表很长,使用其他提到的解决方案会更有效,并且在排序后,将List<int>
转换回List<String>
:
void main() {
List<String> list = ['1', '5', '10', '25', '50', '100', '250'];
List<int> lint = list.map(int.parse).toList();
lint.sort();
list = lint.map((i) => i.toString()).toList();
print(list); // [1, 5, 10, 25, 50, 100, 250]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.