gpt4 book ai didi

java - 读取包含随机数的文件,对其进行排序,然后写入其他文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:59 25 4
gpt4 key购买 nike

在一次采访中,我被问到以下问题,

有一个名为 sourceFile.txt 的文件,其中包含一个下一个对齐的随机数,如下所示,

608492
213420
23305
255572
64167
144737
81122
374768
535077
866831
496153
497059
931322

同一个数字可以出现多次。 sourceFile.txt 的大小约为 65GB。

我需要读取该文件并将数字写入新文件让我们按排序顺序说 destinationFile.txt。

我为此编写了以下代码,

/*
Copy the numbers present in the file, store in
list, sort it and than write into another file.
*/
public static void readFileThanWrite(String sourceFileName,String destinationFileName) throws Exception{
String line = null;
BufferedReader reader = new BufferedReader(new FileReader(sourceFileName));
List<Integer> list = new ArrayList<Integer>();
do{
if(line != null){
list.add(Integer.parseInt(line));
}

line = reader.readLine();
}while(line != null);

Collections.sort(list);

File file = new File(destinationFileName);
FileWriter fileWriter = new FileWriter(file,true); // 'True' means write content to end of file
BufferedWriter buff = new BufferedWriter(fileWriter);
PrintWriter out = new PrintWriter(buff);

for(Iterator<Integer> itr = list.iterator();itr.hasNext();){
out.println(itr.next());
}

out.close();
buff.close();
fileWriter.close();
}

但是面试官说上面的程序会因为文件太大而无法加载和排序数字。

更好的解决方案应该是什么?

最佳答案

如果您知道所有数字都相对较小,那么保留一个出现次数数组就可以了。如果您没有关于输入的任何信息,您正在寻找 external sorting .这是一个 Java project这可以帮助你,这里是 corresponding class .

关于java - 读取包含随机数的文件,对其进行排序,然后写入其他文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40436885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com