java - 在 HashMap 中将 float[] 转换为 double[]

标签 java arrays data-structures hashmap

我声明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/

相关文章:

javascript - 是否可以在 javascript 中创建属性?

javascript - 如何将多个零插入已存在的数组

c++ - AVL树的插入方法?

php - 如何像php一样在C++中实现一个非连续的动态矩阵?

java - 如何将 Apache Ignite 缓存条目写入 Apache Avro 文件?

java - 为什么在我的 BufferedReader 中使用*更大*的缓冲区时性能会*差*?

java - 防止 XmlBeans 修剪空格

java - Android - 使用具有静态方法的帮助器类动态注册/取消注册接收器?

javascript - 检测二维阵列中的相干邻居/邻域

data-structures - 5 个流行的哈希函数..?