我有一个文本文件,按字母顺序排序,大约有94,000行姓名(每行一个姓名,只有文本,没有标点符号)。
例如:
Alice Bob
Simon
Simon
Tom
每行的格式都相同,首字母大写,没有重音字母。
我的代码:
据我理解,文件的第一行被读取并加载到previousLine变量中,就像我想的那样,current被设置为我们正在读取的文件的第二行,然后将current与上一行和null进行比较,如果它与上一行不同且不为null,则将其添加到数组列表中。
然后,previousLine被设置为当前值,以便下一个current的readLine可以替换当前的'current'值,继续在while循环中进行比较。
我看不出有什么问题。 如果发现重复,循环肯定应该停止吧?
提前道歉,如果结果证明是某些愚蠢的错误。
例如:
Alice Bob
Simon
Simon
Tom
每行的格式都相同,首字母大写,没有重音字母。
我的代码:
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被设置为当前值,以便下一个current的readLine可以替换当前的'current'值,继续在while循环中进行比较。
我看不出有什么问题。 如果发现重复,循环肯定应该停止吧?
提前道歉,如果结果证明是某些愚蠢的错误。
!(current = br.readLine()).equals(previousLine)
- Pavneet_Singh