使用Java以随机顺序比较两个文本文件

lit*_*hik 4 java bufferedreader printwriter

我试图比较两个随机化的文本文件,并打印出两个文件中匹配的行.档案1:

Student1
Student2
Student3
Student4
Run Code Online (Sandbox Code Playgroud)

文件2:

Student6
Student1
Student2
Run Code Online (Sandbox Code Playgroud)

我希望输出为

Student1
Student2
Run Code Online (Sandbox Code Playgroud)

我的代码如下.

public static void main(String[] args) throws IOException {

     String first = "file1.txt";
     String second = "file2.txt";
     BufferedReader fBr = new BufferedReader(new FileReader(first));
     BufferedReader sBr = new BufferedReader(new FileReader(second));   




     PrintWriter writer = new PrintWriter("test.txt", "UTF-8");  
     while ((first = fBr.readLine()) != null) {
         String partOne1 = fBr.readLine();
         String partTwo1 = sBr.readLine();
         while ((second = sBr.readLine()) != null) {
                System.out.println(first);
                writer.println(first);  
                break;                   

         }
     }


     writer.close();
     fBr.close();
     sBr.close(); 
Run Code Online (Sandbox Code Playgroud)

小智 6

这很简单=)尝试存储第一个文件的所有结果,并与第二个文件中的所有行进行比较.它会是这样的:

package com.company;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class Main {

    public static void main(String[] args) throws IOException {

        String first = "file1.txt";
        String second = "file2.txt";
        BufferedReader fBr = new BufferedReader(new FileReader(first));
        BufferedReader sBr = new BufferedReader(new FileReader(second));

        ArrayList<String> strings = new ArrayList<String>();

        while ((first = fBr.readLine()) != null) {
            strings.add(first);
        }
        fBr.close();

        while ((second = sBr.readLine()) != null) {
            if (strings.contains(second)) {
                System.out.println(second);
            }
        }
        sBr.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

最好在可能的情况下使用内存,在不同的时间内使用内存可以工作太长时间并且使逻辑变得模糊.