Java编译器错误:查找表超过65535限制

时间:2012-09-05 19:39:23

标签: java lookup-tables

由于基于此定义的极大查找表,我遇到了这个编译器错误:

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

据我了解,将其分解是一种解决方案,但要准确地分割这个阵列是非常困难的。我也相信我可以把它移到一个文件,但我不知道我是否可以用一种方式来帮助我格式化,而且我不想每秒都读取文件。 还有其他建议可以帮助我解决这个问题吗?

3 个答案:

答案 0 :(得分:5)

将表转换为文件,将文件作为资源嵌入,在静态初始化块中读取一次,然后将其存储在lookUpTable数组中。它不会与通过聚合初始化的数组区分开来,除非没有65535限制。存储在静态变量中将有助于避免“每秒读取一次”。

就格式而言,您可以将矩阵的每一行放在资源文件的单独行中。阅读和维护这个文件很简单,因为你的数字周围没有其他标记。

这是link to an answer explaining how to read a file from a resource

答案 1 :(得分:1)

按需阅读文件。

因为你有一个表/矩阵,我建议每行一行。读取每一行并拆分数字并分别解析它们。

答案 2 :(得分:0)

您可以将行保留在字符串中(从而减少java要处理的对象数),以逗号分隔值,并在程序启动时,拆分每一行,从而建立您的longs表。