Я думаю, что проблема в том, что здесь есть два шага, которые вы пытаетесь объединить в один. Во-первых, вы хотите создать массив массивов, достаточно большой, чтобы вместить все отдельные массивы:
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;
}
И ты должен быть золотым!