1

この定義に基づく非常に大きなルックアップ テーブルが原因で、このコンパイラ エラーが発生しています。

//92 X 182 array
private static final double[][] lookUpTable = new double[][]
{
    { numbers....}
};

私が理解しているように、それを分割することは解決策ですが、この配列を正確に分割することは非常に困難です。私はそれをファイルに移動できると信じていますが、私を助けるためにそれをフォーマットできるかどうかはわかりません。また、毎秒ファイルを読みたくありません。これを回避するのに役立つ他の提案はありますか?

4

3 に答える 3

5

テーブルをファイルに変換し、ファイルをリソースとして埋め込み、静的初期化ブロックで一度読み取り、lookUpTable配列に格納します。65535 の制限がないことを除いて、集計によって初期化された配列と区別できません。静的変数に格納すると、「毎秒読み取り」を回避できます。

形式に関する限り、マトリックスの各行をリソース ファイルの個別の行に配置できます。数字の周りに他のマークアップがないため、このファイルの読み取りと保守は簡単です。

これは、リソースからファイルを読み取る方法を説明する回答へのリンクです

于 2012-09-05T19:47:18.817 に答える
1

オンデマンドでファイルを 1 回読み取ります。

テーブル/マトリックスがあるので、行ごとに 1 行にすることをお勧めします。各行を読み取り、数値を分割して個別に解析します。

于 2012-09-05T19:42:49.597 に答える
0

コンマ区切りの値として行を文字列に保持し(したがって、Javaが処理するオブジェクトの数を減らす)、プログラムの開始時に各行を分割して、longのテーブルを構築できます。

于 2012-09-05T19:51:12.873 に答える