我正在嘗試創建一個臨時串列來映射它,但是當我對臨時串列進行排序時,原始串列會被排序。我不知道為什么它會這樣作業。
final _colors = [
Colors.green[600],
Colors.green[600],
Colors.amber[600],
Colors.amber[600],
Colors.amber[600],
Colors.red[600],
Colors.red[600]
];
final _temp = _sevenRandomNumbers;
_temp.sort((a, b) => a.compareTo(b));
return {for (int i = 0; i < 7; i ) _temp[i]: _colors[i]};
在這種情況下,我創建了一個名為 _temp 的重復串列,但是當我按照下一行代碼所示對其進行排序時,原始串列(即 _sevenRandomNumbers)也會被排序。
例如,如果最初,_sevenRandomNumbers 是 [4, 7, 3, 8, 1, 2, 5]。我設定了一個最終變數_temp,它應該包含具有相同順序的相同串列,即[4、7、3、8、1、2、5]。當我對 _temp 串列進行排序時,只有這個串列應該像 [1, 2, 3, 4, 5, 7, 8] 那樣排序,但在我的情況下,原始串列,即 _sevenRandomNumbers 也會像這樣排序。
我知道這是一個菜鳥問題,但我很困惑。問候。
uj5u.com熱心網友回復:
由于您有一個原始型別串列,您可以使用擴展運算子(在 Dart 2.3 中引入)來克隆您的串列:
void main() {
final List<int> _sevenRandomNumbers = [4, 7, 3, 8, 1, 2, 5];
final _temp = [..._sevenRandomNumbers];
_temp.sort((a, b) => a.compareTo(b));
print('7 random numbers: $_sevenRandomNumbers');
print('Sorted: $_temp');
}
// 7 random numbers: [4, 7, 3, 8, 1, 2, 5]
// Sorted: [1, 2, 3, 4, 5, 7, 8]
注意:展開運算子也適用于 aMap或 a Set。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/430290.html
上一篇:一行輸出串列資料
