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