我声明LinkedHashMap<String, float[]>
现在我想转换 float[]
值写入 double[][]
。我正在使用以下代码。
LinkedHashMap<String, float[]> fData;
double data[][] = null;
Iterator<String> iter = fData.keySet().iterator();
int i = 0;
while (iter.hasNext()) {
faName = iter.next();
tValue = fData.get(faName);
//data = new double[fData.size()][tValue.length];
for (int j = 0; j < tValue.length; j++) {
data[i][j] = tValue[j];
}
i++;
}
当我尝试打印数据 System.out.println(Arrays.deepToString(data));
时它不显示数据:(
我尝试调试我的代码,我发现我必须在外部初始化数据 while 循环,但我不知道数组尺寸:(
如何解决?
谢谢
最佳答案
我认为问题在于您试图将这里的两个步骤合并为一个。首先,您想要创建一个足够大的数组来容纳所有单独的数组:
double[][] data = new double[fData.size()][];
接下来,您需要迭代所有条目,构建一个足够大的数组来容纳该值:
double[][] data = new double[fData.size()][];
int index = 0;
for (float[] entry: fData.values()) {
/* ... */
++index;
}
在每次循环迭代中,您都需要分配一个数组来保存所有 float :
double[][] data = new double[fData.size()][];
int index = 0;
for (float[] entry: fData.values()) {
data[index] = new double[entry.length];
/* ... */
++index;
}
最后,您需要将数据复制到:
double[][] data = new double[fData.size()][];
int index = 0;
for (float[] entry: fData.values()) {
data[index] = new double[entry.length];
for (int i = 0; i < entry.length; ++i)
data[index][i] = entry[i];
++index;
}
你应该是金色的!
关于java - 在 HashMap 中将 float[] 转换为 double[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664874/