我有一个大文本文件(+ 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)