减少csv解析器的运行时间

时间:2016-11-25 00:31:54

标签: java csv parsing gwt runtime

我在csv文件中有230个&#39,000个条目的数据集。 1行看起来像这样:

1849-06-01,24.844,1.402,Abidjan,Côte D'Ivoire,5.63N,3.23W

现在当我尝试将条目拆分成数组,然后创建一个对象并将后一个对象添加到一个arraylist时,我失败了。后来我注意到它与我尝试的条目数有关。我发现20&000; 000是绝对最大值。我的解析器看起来像这样:

try {
        new RequestBuilder(RequestBuilder.GET, "test20.csv").sendRequest("", new RequestCallback() {

            String data[] = new String[20000];
            @Override
            public void onResponseReceived(Request req, Response resp) {
                String text = resp.getText();
                data = text.split("\n");
                for(String str: data) {

                    String[] results = new String[6];
                    results = str.split(",");

                    // creates DataTableObject using the constructor
                    DataTableObject object = new DataTableObject(results[0], results[1], results[2], results[3], results[4], results[5], results[6]);
                    dataSet.add(object);
                }
                drawTable(dataSet);
            }

            @Override
            public void onError(Request res, Throwable throwable) {
                // handle errors
            }
        });
    } catch (RequestException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

drawTable()方法只是将所有创建的对象插入到flextable中。

dataSet是ArrayList<DataTableObject>,这些对象只包含所有Strings(城市,国家/地区等)

整个事情与GWT 2.7.0JDK 1.8一起运行。

您是否知道如何在不触及浏览器超时的情况下绘制所有230&000条目?

我尝试过没有物体的工作,但这并没有显着减少运行时间。也不会仅按\n,进行拆分。

由于

0 个答案:

没有答案