我可以<dynamic>在飞镖中对列表进行排序吗



我可以在dart中对List<dynamic>进行排序吗?

List<dynamic> list= [9,10,'Plus One'];
list.sort();
print(list);

我希望结果像9,10,"加一"或"加一,9,10

您只需要为List.sort提供一个回调,该回调可以按您想要的wya对异构类型进行排序。例如,假设您的异构List只包含ints和Strings,您可以执行以下操作:

List<dynamic> list = [9, 10, 'Plus One'];
list.sort((a, b) {
if ((a is int && b is int) || (a is String && b is String)) {
return a.compareTo(b);
}
if (a is int && b is String) {
return -1;
} else {
assert(a is String && b is int);
return 1;
}
});
print(list);

如果您可能需要处理其他类型,则需要适当地调整回调。

如果您想对动态列表进行排序,并且希望字符串在数字(int或double(之前,请尝试

此代码:

List<dynamic> list = [
'mahmoud',
14,
'zika',
9,
10,
'plus One',
5,
'banana',
1,
2.5,
'apple',
2,
1.2,
'ball'
];
list.sort(
(a, b) {
if ((a is num && b is num) || (a is String && b is String)) {
return a.compareTo(b);
}
// a Greater than b return 1
if (a is num && b is String) {
return 1;
}
// b Greater than a return -1
else if (a is String && b is num) {
return -1;
}
// a equal b return 0
return 0;
},
);
print(list);// [apple, ball, banana, mahmoud, plus One, zika, 1, 1.2, 2, 2.5, 5, 9, 10, 14]

最新更新