我遇到了 Java 数组的问题,它有大约 20000 个值,
可以找到完整的数组here
我的代码:
public class UsableIDs {
private final static int idsArray[] = {615,616,617,618,...};
private final static int ids = idsArray.length;
public static String checkID(int x){
for(int i=0;i<ids;i++){
if(x==idsArray[i])
return "Usable";
}
return "NotUsable";
}
}
在我的其他方法中,我尝试用以下方式调用它:
String temp = UsableIDs.checkID( xyz );
此时程序崩溃总是Crash
我使用 NetBeans。
如果有人可以帮助我运行这段代码,我会很高兴。
最佳答案
您看到错误是因为 Java 将静态初始化程序 block 的大小限制为 65535 字节。最好将您的数据与源代码分开,即将 ID 放入单独的文件中。
下面的代码等同于您的代码,假设数组中的数据存储(以逗号分隔,没有括号或换行符)到 /temp/usableids.txt
中。
import java.nio.file.Files;
import java.nio.file.Paths;
public class UsableIDs {
private final static int idsArray[];
static {
try {
String fileData = new String(
Files.readAllBytes(Paths.get("/temp/usableids.txt")), "UTF-8").trim();
String[] ids = fileData.split(",");
idsArray = new int[ids.length];
for (int i = 0; i < ids.length; i++) {
idsArray[i] = Integer.parseInt(ids[i]);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static String checkID(int x) {
for (int i = 0; i < idsArray.length; i++) {
if (x == idsArray[i])
return "Usable";
}
return "NotUsable";
}
}
关于具有大约 20000 个值声明的 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45302183/