由于基于此定义的极大查找表,我遇到了这个编译器错误:
//92 X 182 array
private static final double[][] lookUpTable = new double[][]
{
{ numbers....}
};
据我了解,将其分解是一种解决方案,但要准确地分割这个阵列是非常困难的。我也相信我可以把它移到一个文件,但我不知道我是否可以用一种方式来帮助我格式化,而且我不想每秒都读取文件。 还有其他建议可以帮助我解决这个问题吗?
答案 0 :(得分:5)
将表转换为文件,将文件作为资源嵌入,在静态初始化块中读取一次,然后将其存储在lookUpTable
数组中。它不会与通过聚合初始化的数组区分开来,除非没有65535限制。存储在静态变量中将有助于避免“每秒读取一次”。
就格式而言,您可以将矩阵的每一行放在资源文件的单独行中。阅读和维护这个文件很简单,因为你的数字周围没有其他标记。
这是link to an answer explaining how to read a file from a resource。
答案 1 :(得分:1)
按需阅读文件。
因为你有一个表/矩阵,我建议每行一行。读取每一行并拆分数字并分别解析它们。
答案 2 :(得分:0)
您可以将行保留在字符串中(从而减少java要处理的对象数),以逗号分隔值,并在程序启动时,拆分每一行,从而建立您的longs表。