You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java去除文本文件中的重复单词?现有代码求助

解决Java文本文件去重并生成输出文件的问题

嘿,我来帮你搞定这个需求!你的目标是读取names.txt里的单词,去除重复后写入output.txt,原代码里有几个小问题需要调整,我一步步给你讲清楚:

原代码的问题点

  • 文件名写错啦:你要读的是names.txt,但代码里写的是weather.txt
  • 用到了未定义的set变量,而且逻辑是在找相邻重复,不是全局去重
  • 没有实现将结果写入输出文件的逻辑
  • 统计单词数的逻辑也有问题,会少算第一个单词

修正后的完整代码

我们可以用LinkedHashSet来处理去重,它既能自动去重,还能保留单词第一次出现的顺序,完美适配你的需求。然后用文件写入流把结果输出到output.txt:

import java.io.*;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;

public class DuplicateRemover {
    public static void main(String[] args) throws IOException {
        // 用LinkedHashSet保存去重后的单词,保留插入顺序
        Set<String> uniqueNames = new LinkedHashSet<>();
        // 读取目标文件names.txt
        File inputFile = new File("names.txt");
        Scanner scanner = new Scanner(inputFile);

        // 遍历文件里的所有单词,加入Set自动去重
        while (scanner.hasNext()) {
            String name = scanner.next();
            uniqueNames.add(name);
        }
        scanner.close(); // 记得关闭扫描器

        // 将去重后的内容写入output.txt
        File outputFile = new File("output.txt");
        BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile));
        
        // 把Set里的元素用空格拼接写入
        StringBuilder sb = new StringBuilder();
        for (String name : uniqueNames) {
            if (sb.length() > 0) {
                sb.append(" ");
            }
            sb.append(name);
        }
        writer.write(sb.toString());
        writer.close(); // 关闭写入流

        // 控制台打印结果,方便验证
        System.out.println("去重后的内容:");
        System.out.println(sb.toString());
        System.out.println("总共有 " + uniqueNames.size() + " 个不重复的单词");
    }
}

代码解释

  1. LinkedHashSet的作用:和普通HashSet不同,它会记住元素插入的顺序,这样输出的结果就和原文件中单词第一次出现的顺序一致,符合你的需求。
  2. 文件读取:用Scanner按空格分割读取每个单词,逐个加入Set,重复的单词会被自动忽略。
  3. 文件写入:用BufferedWriter来高效写入文件,先把所有单词用StringBuilder拼接成带空格的字符串,再一次性写入,避免频繁IO操作。
  4. 资源关闭:记得关闭Scanner和BufferedWriter,避免资源泄漏。

运行结果

执行后,output.txt里的内容会是:

Maria Derek Erica Livia Jack Anita Kendall Jamie Thomson

完全符合你的预期!

内容的提问来源于stack exchange,提问作者XRA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:42:56