我有一个List<String>
,我想创建一个Set<String>
的方阵(二维数组/列表),其尺寸与List<String>
的长度相同。
我尝试使用
List.filled(entries.length, List.filled(entries.length, Set<String>()));
但是问题在于,矩阵的每一行似乎都引用了相同的列表实例,因此更改一行中的值也会更改所有其他行中的值。
所以我尝试了
List.filled(entries.length, List.from(List.filled(entries.length, Set<String>())));
但是我仍然有同样的问题。最终我投降并求助
List<List<Set<String>>> matrix = [];
for(int i=0; i<entries.length; i++) {
List<Set<String>> row = [];
for (int n = 0; n<entries.length; n++) {
row.add(Set<String>());
}
matrix.add(row);
}
它可以工作,但是很难看。有没有更清洁的方法可以做到这一点?
答案 0 :(得分:4)
List.generate(n, (_) => List.generate(n, (_) => <String>{}));
答案 1 :(得分:0)
可能,您可以使用 Matrix2 类(或其他维度的矩阵:Matrix3、Matrix4)。不幸的是,我没有使用这些类的经验,但也许它对你有一定的意义。这些类具有用于从列表生成矩阵的构造函数。