我有一个按字母顺序排序的文本文件,包含大约 94,000 行名称(每行一个名称,纯文本,没有标点符号。
例子:
爱丽丝
鲍勃
西蒙
西蒙
汤姆
每一行都采用相同的形式,第一个字母大写,没有重音字母。
我的代码:
try{
BufferedReader br = new BufferedReader(new FileReader("orderedNames.txt"));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("sortedNoDuplicateNames.txt", true)));
ArrayList<String> textToTransfer = new ArrayList();
String previousLine = "";
String current = "";
//Load first line into previous line
previousLine = br.readLine();
//Add first line to the transfer list
textToTransfer.add(previousLine);
while((current = br.readLine()) != previousLine && current != null){
textToTransfer.add(current);
previousLine = current;
}
int index = 0;
for(int i=0; i<textToTransfer.size(); i++){
out.println(textToTransfer.get(i));
System.out.println(textToTransfer.get(i));
index ++;
}
System.out.println(index);
}catch(Exception e){
e.printStackTrace();
}
据我了解,文件的第一行正在被读取并加载到 previousLine 变量中,就像我想要的那样,current 被设置为我们正在读取的文件的第二行,然后比较 current针对上一行和 null,如果它与最后一行不同并且不为 null,我们将其添加到数组列表中。
然后将 previousLine 设置为当前值,以便当前的下一个 readLine 可以替换当前的“当前”值以继续在 while 循环中进行比较。
我看不出这有什么问题。 如果找到重复项,循环肯定会中断吗?
如果结果是愚蠢的事情,请提前道歉。
最佳答案
关于java - 从文本文件中删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45823487/