2011-01-12 9 views
0

LinkedHashMap<String, float[]>と宣言しましたが、今度はfloat[]の値をdouble[][]に変換します。私は次のコードを使用しています。HashMap内の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));データを印刷しよう:(

私は自分のコードをデバッグしようとした私は、ループしながら、 外のデータを初期化する必要がありますがあることを考え出しました私は、配列の次元を知らない:(

それを解決するためにどのようにあなたが必要

おかげ

+0

tValueとは何ですか?それはあなたの思考の鍵であるようですが、そのサイズやどこから来るのかについてのヒントはありません。 – duffymo

+0

ここでデバッグ業務を終了したい場合は、代わりにGuavaのArrayListMultimapを使用することを検討してください。http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/ArrayListMultimap.html – dkarp

答えて

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

を?:

以降のループで次に
double data[][] = new double[fData.size()][]; 

、あなたが必要とする:

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

私は問題はあなたが融合するしようとしている、ここで二つのステップがあることだと思います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; 
} 

あなたは金色でなければなりません!

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

data[i] = new double[tValue.length]; 
関連する問題