我想创建一个行数可变的矩阵,该矩阵在运行时填充。行数取决于数据,并且在程序启动之前是未知的。我尝试的是这样的:
ArrayList<HashMap<Integer, Double>> eMatrix = new ArrayList<HashMap<Integer, Double>>();
HashMap<Integer, Double> row = new HashMap<Integer, Double>();
while (i < foo.size() - 1) {
if (foo.get(i) == 0) {
row.put(0, foo.get(i));
}
if (foo.get(i) == 1) {
ro.put(1, foo.get(i));
}
if (foo.get(i) == 2) {
ro.put(2, foo.get(i));
}
if (!row.isEmpty()) {
eMatrix.add(row);
}
row.clear();
i++;
}
这个想法是,由于 ArrayList 和 HashMap 可以具有可变大小,以便使用 HashMap 创建行,并将这些行添加到 ArrayList 中,从而形成一个矩阵。现在的问题是 row.clear
也清除了 eMatrix
中的条目。您有更好的想法吗?
最佳答案
您的具体实现问题可以通过为矩阵的每一行创建一个新的 HashMap
实例来解决:
ArrayList<HashMap<Integer, Double>> eMatrix = new ArrayList<HashMap<Integer, Double>>();
while (i < foo.size() - 1) {
HashMap<Integer, Double> row = new HashMap<Integer, Double>();
if (foo.get(i) == 0) {
row.put(0, foo.get(i));
}
if (foo.get(i) == 1) {
ro.put(1, foo.get(i));
}
if (foo.get(i) == 2) {
ro.put(2, foo.get(i));
}
if (!row.isEmpty()) {
eMatrix.add(row);
}
i++;
}
也就是说,我仍然会尝试使用简单的二维数组 (double[][]
)。一旦您知道了矩阵所需的维度,您就可以在运行时对其进行初始化。
关于java - 在Java中表示可变长度矩阵(二维数组)的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33890641/