📜  Java StringBuilder 过滤相同的行 - Java (1)

📅  最后修改于: 2023-12-03 14:42:16.459000             🧑  作者: Mango

Java StringBuilder 过滤相同的行

在Java中,StringBuilder 是一个可变字符序列,用于构建字符串。它提供了一系列方法来修改、添加和删除字符信息。本文将介绍如何使用 StringBuilder 来过滤相同的行。

问题描述

假设我们有一个文本文件,其中包含多行文本。我们想要从文件中读取内容,并过滤掉重复的行,然后将结果写入新的文件。

解决方案

以下为解决这个问题的示例代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

public class FilterDuplicateLines {
    public static void filterDuplicateLines(String inputFile, String outputFile) throws IOException {
        Set<String> uniqueLines = new HashSet<>();

        try (BufferedReader reader = new BufferedReader(new FileReader(inputFile));
             BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                if (!uniqueLines.contains(line)) {
                    uniqueLines.add(line);
                    writer.write(line);
                    writer.newLine();
                }
            }
        }
    }

    public static void main(String[] args) {
        String inputFile = "input.txt";
        String outputFile = "output.txt";

        try {
            filterDuplicateLines(inputFile, outputFile);
            System.out.println("Duplicate lines filtered successfully!");
        } catch (IOException e) {
            System.out.println("An error occurred while filtering duplicate lines: " + e.getMessage());
        }
    }
}

在上面的代码中,我们首先创建了一个 Set 来存储唯一的行。然后,我们使用 BufferedReader 逐行读取输入文件的内容,并检查当前行是否已存在于 uniqueLines 集合中。如果行不重复,我们将它添加到集合中,并使用 BufferedWriter 将其写入输出文件。

main 方法中,我们使用 filterDuplicateLines 方法来过滤输入文件的重复行,并将结果写入输出文件。如果过程顺利完成,则打印出成功的信息。如果发生任何错误,程序将打印出错误消息。

运行上面的代码将从名为 input.txt 的文件中读取文本内容,并将去除重复行后的结果写入 output.txt 文件中。

以上就是使用 JavaStringBuilder 过滤相同行的示例。希望本文对你有所帮助!