小编mcl*_*pez的帖子

将大文本文件加载到int数组中的最快方法

我有一个大文本文件(+ 100MB),每行是一个整数(包含1000万个数字).当然,尺寸和数量可能会有所变化,所以我事先并不知道.

我想将文件加载到a中int[],使进程尽可能快.首先我来到这个解决方案:

public int[] fileToArray(String fileName) throws IOException
{
    List<String> list = Files.readAllLines(Paths.get(fileName));
    int[] res = new int[list.size()];
    int pos = 0;
    for (String line: list)
    {
        res[pos++] = Integer.parseInt(line);
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)

它非常快,5.5秒.其中,5.1s用于readAllLines呼叫,而0.4s用于循环.

但后来我决定尝试使用BufferedReader,并找到了这个不同的解决方案:

public int[] fileToArray(String fileName) throws IOException
{
    BufferedReader bufferedReader = new BufferedReader(new FileReader(new File(fileName)));
    ArrayList<Integer> ints = new ArrayList<Integer>();
    String line;
    while ((line = bufferedReader.readLine()) != null)
    {
        ints.add(Integer.parseInt(line));
    }
    bufferedReader.close();

    int[] res = new int[ints.size()];
    int pos = …
Run Code Online (Sandbox Code Playgroud)

java arrays performance

4
推荐指数
1
解决办法
768
查看次数

标签 统计

arrays ×1

java ×1

performance ×1