Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我通过迭代器运行一个文件时,它需要花费大量的时间来处理;我如何优化它?_Java_Json_Swing_Iterator_Jcombobox - Fatal编程技术网

Java 当我通过迭代器运行一个文件时,它需要花费大量的时间来处理;我如何优化它?

Java 当我通过迭代器运行一个文件时,它需要花费大量的时间来处理;我如何优化它?,java,json,swing,iterator,jcombobox,Java,Json,Swing,Iterator,Jcombobox,我正在写一个小程序,而我正在学习编码。我想让这个特定函数做的是从一个txt文件中读取一个JSONArray(从一个使用json.simple创建的JSONObject中读取),然后将值放入一个数组中,以便在JComboBox中显示这些值,供用户选择。我希望这样做的原因是txt文件中要存储的内容列表非常大(3000+),并且经常更改,因此只更新文件来更新阵列本身应该更容易。(是的,我知道在JComboBox中存储那么多东西是很疯狂的;我计划在东西真正工作后改变它) 对于代码,这里是JSONRead

我正在写一个小程序,而我正在学习编码。我想让这个特定函数做的是从一个txt文件中读取一个JSONArray(从一个使用json.simple创建的JSONObject中读取),然后将值放入一个数组中,以便在JComboBox中显示这些值,供用户选择。我希望这样做的原因是txt文件中要存储的内容列表非常大(3000+),并且经常更改,因此只更新文件来更新阵列本身应该更容易。(是的,我知道在JComboBox中存储那么多东西是很疯狂的;我计划在东西真正工作后改变它)

对于代码,这里是JSONReader部分

public static void JSONArrayReader(File JSONFile, String ObjName, String[] ArrayOutput) throws FileNotFoundException, IOException, ParseException {
    JSONParser parser = new JSONParser();
    Object obj = parser.parse(new FileReader(JSONFile));
    JSONObject object = (JSONObject) obj;
    JSONArray JSONArray = (JSONArray) object.get(ObjName);
    Iterator<String> iterator = JSONArray.iterator();
    int j = 0;
    while (iterator.hasNext()) {
        ArrayOutput[j] = iterator.next();
        j++;
    }
}
对于组合框代码中设置数组大小的位,它也在JSONReader类中,并且只返回JSONArray大小的值,它使用与JSONArrayReader方法几乎完全相同的代码


它按它应该的方式运行(据我所知),但运行需要很长的时间,就像整整10分钟才能找到文件的大小一样。

文件有多大?你分析过代码吗?它必须是json吗?与其手动操作,为什么不将其另存为对象?这样你就可以在一个电话里读出来。速度也快得多。只是一个想法。把它放在ArrayList中,而不知道文件的大小,然后如果需要,将它转换为普通数组。如果没有
JSONArraySize
method,您提供的方法需要多长时间?如果你的文件真的很大,那么10分钟是可能的。JSON文件中大约有5000个条目,我之所以这样存储它,是因为我用程序访问这些API来获取关于“条目”的信息将所有信息存储在JSON文件中,因此我认为将所有信息保持为一种文件类型会更容易。而thans Shadov的ArrayList,然后将其放入一个数组中,效果非常好。
File JSONFile = new File("C:/Users/jorda/Documents/java workspace/itemNameList.txt");
    JSONReader JSONReader = new JSONReader();
    System.out.println("made it this far");
    String[] ArrayList = new String[JSONReader.JSONArraySize(JSONFile, "items")];
    JSONReader.JSONArrayReader(JSONFile, "items", ArrayList);
    JComboBox comboBox = new JComboBox(ArrayList);
    comboBox.setBounds(10, 49, 194, 31);
    frameItemSelector.getContentPane().add(comboBox);