为什么主列表会排序 -Flutter
Why does the primary list get sorted -Flutter
我正在尝试创建一个临时列表来映射它,但是当我对临时列表进行排序时,原始列表也会被排序。不知道为什么会这样。
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 也像这样排序。
我知道这是一个菜鸟类的问题,但我很困惑。问候。
因为你有一个基本类型列表,你可以使用 spread operator(在 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]
注意:扩展运算符也适用于 Map
或 Set
。
我正在尝试创建一个临时列表来映射它,但是当我对临时列表进行排序时,原始列表也会被排序。不知道为什么会这样。
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 也像这样排序。
我知道这是一个菜鸟类的问题,但我很困惑。问候。
因为你有一个基本类型列表,你可以使用 spread operator(在 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]
注意:扩展运算符也适用于 Map
或 Set
。