如何在Dart中创建矩阵?

时间:2019-06-26 07:56:27

标签: collections flutter dart

我有一个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);
}

它可以工作,但是很难看。有没有更清洁的方法可以做到这一点?

2 个答案:

答案 0 :(得分:4)

List.generate(n, (_) => List.generate(n, (_) => <String>{}));

答案 1 :(得分:0)

可能,您可以使用 Matrix2 类(或其他维度的矩阵:Matrix3、Matrix4)。不幸的是,我没有使用这些类的经验,但也许它对你有一定的意义。这些类具有用于从列表生成矩阵的构造函数。