具有大约 20000 个值声明的 Java 数组

标签 java arrays

我遇到了 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/

相关文章:

java - 在文件数组中查找特定数据?

java - 如何从 ConcurrentHashMap<String, Set<String>> 中删除用作值的 Set?

java - 使用 switch 语句时如何忽略大小写

java - 无法运行新的android项目

c++ - 在 C++ 中对排列进行排序的最便宜的方法是什么?

python - 获取 numpy 稀疏矩阵行的范数

c - 如何从 C 中的结构复制字符?

javascript - 使用加权概率和值查找数组中的项目

java - 如何在 Jenkins 中使用 Java 变量

java - 通用类还是抽象类?