Java程序删除文本文件中的重复行


Set 接口不允许重复元素。该接口的 add() 方法接受元素并将其添加到 Set 对象中,如果添加成功则返回 true,如果尝试使用此方法添加现有元素,则添加操作将失败并返回 false。

问题陈述

给定一个包含重复行的文件,编写一个 Java 程序来读取该文件,删除重复行,并将唯一行写入新文件。

输入

Hello how are you
Hello how are you
welcome to Tutorialspoint

输出

Hello how are you
welcome to Tutorialspoint

基本方法

从文件中删除重复行的基本方法 -

  • 步骤 1. 实例化 Scanner 类(任何从文件读取数据的类)
  • 步骤 2. 实例化 FileWriter 类(任何将数据写入文件的类)
  • 步骤 3. 创建 Set 接口 的对象。
  • 步骤 4. 读取文件的每一行,将其存储在名为 input 的字符串中。
  • 步骤 5. 尝试将此字符串添加到 Set 对象中。
  • 步骤 6. 如果添加成功,则将该特定行追加到 FileWriter 中。
  • 步骤 7. 最后,将 FileWriter 的内容刷新到输出文件。

如果文件包含某一行多次,则第一次将其添加到 Set 对象中,并追加到 FileWriter 中。

如果在读取文件中的所有行时再次遇到相同的行,由于它已存在于 Set 对象中,因此 add() 方法将拒绝它。

示例

以下 Java 程序删除上述文件中的重复行,并将它们添加到名为 output.txt 的文件中。

import java.io.File;
import java.io.FileWriter;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class DeletingDuplcateLines {
   public static void main(String args[]) throws Exception {
      String filePath = "D://sample.txt";
      String input = null;
      //Instantiating the Scanner class
      Scanner sc = new Scanner(new File(filePath));
      //Instantiating the FileWriter class
      FileWriter writer = new FileWriter("D://output.txt");
      //Instantiating the Set class
      Set set = new HashSet();
      while (sc.hasNextLine()) {
         input = sc.nextLine();
         if(set.add(input)) {
            writer.append(input+"
");          }       }       writer.flush();       System.out.println("Contents added............");    } }

输出

Contents added............

output.txt 的内容将是

Hello how are you
welcome to Tutorialspoint

更新时间: 2024-07-08

2K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告