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

时间:2011-01-12 02:40:06

标签: 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循环然后我不知道数组维度:(

如何解决?

由于

4 个答案:

答案 0 :(得分:1)

我认为问题是这里有两个步骤,你试图将它们合并为一个。首先,您要创建一个足以容纳所有单个数组的数组数组:

double[][] data = new double[fData.size()][];

接下来,您将要遍历所有条目,构建一个足以容纳该值的数组:

double[][] data = new double[fData.size()][];

int index = 0;
for (float[] entry: fData.values()) {
    /* ... */
    ++index;
}

在每次循环迭代中,您都需要分配一个数组来保存所有浮点数:

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;
}

你应该是金色的!

答案 1 :(得分:0)

你需要:

double data[][] = new double[fData.size()][];

然后在循环中,你需要:

data[i] = new double[tValue.length];

答案 2 :(得分:0)

试试这个:

LinkedHashMap<String, float[]> fData;
double data[][] = new double[fData.size()][];
int i = 0;

for( String key in fData.keys() ) {
    float[] tValue = fData.get(key);
    data[i] = new double[ tValue.length ];
    for (int j = 0; j < tValue.length; j++) {
        data[i][j] = tValue[j];
    }
    i++;
}

答案 3 :(得分:0)

double data[][] = new data[fData.size()][];

data[i] = new double[tValue.length];