gpt4 book ai didi

java - 从文本文件中删除重复行

转载 作者:行者123 更新时间:2023-12-03 19:41:36 25 4
gpt4 key购买 nike

我有一个按字母顺序排序的文本文件,包含大约 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 循环中进行比较。

我看不出这有什么问题。如果找到重复项,循环肯定会中断吗?

如果结果是愚蠢的事情,请提前道歉。

最佳答案

使用 TreeSet而不是 ArrayList。

Set<String> textToTransfer = new TreeSet<>();

TreeSet 是有序的,不允许重复。

关于java - 从文本文件中删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45823487/

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