如何在两个* .txt文件中找到相同的名称?

时间:2016-05-23 22:33:34

标签: java

我是java的新手(2周前刚开始上课)。

它是一个大学练习,我有2个txt文件1.txt和2.txt,文件1有3个名字(peter,ann和albert)文件2(peter,lennon和smeagol)。

我必须编写一个程序来读取文件,然后比较并回答3个问题:    打印文件1中的名称而不是文件2中的名称。这已完成    打印文件2中的名称而不是文件1中的名称。已完成    打印两个文件中显示的名称。 我无法找到如何比较并给出两个文件中出现的名称。

这是我的代码。

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

        ArrayList<String> list1 = new ArrayList<>();
        // New BufferedReader.
        BufferedReader reader = new BufferedReader(new FileReader(
            "1.txt"));
        // Add all lines from file to ArrayList.
        while (true) {
            String line = reader.readLine();
            if (line == null) {
            break;
            }
            list1.add(line);
        }
        // Close it.
        reader.close();

        // Print size of ArrayList.
        System.out.println("file1: " + list1.size());

        // Print each line.
        for (String line : list1) {
            System.out.println(line);
        }//list1

        System.out.println(" ");

        ArrayList<String> list2 = new ArrayList<>();
        // New BufferedReader.
        BufferedReader reader1 = new BufferedReader(new FileReader(
            "2.txt"));
        // Add all lines from file to ArrayList.
        while (true) {
            String line = reader1.readLine();
            if (line == null) {
            break;
            }
            list2.add(line);
        }
        // Close it.
        reader1.close();
        // Print size of ArrayList.
        System.out.println("file2: " + list2.size());

        // Print each line.
        for (String line : list2) {
            System.out.println(line);
        }

        ArrayList<String> file1 = new ArrayList<String>(list1);
        ArrayList<String> file2 = new ArrayList<String>(list2);

        file1.removeAll(list2);
        file2.removeAll(list1);

        System.out.println(" ");    
        System.out.println("names in file1 that are not in file 2: " + file1);
        System.out.println("names in file2 that are not in file 1: " + file2);

        }//main

    }//class

2 个答案:

答案 0 :(得分:0)

迭代两个数组并进行比较:

if(string1.equals(string2)){
  print(string1)
}

答案 1 :(得分:0)

您可以使用retainAll获取两个集合之间的交集,例如

List<String> one = new ArrayList<>(); one.add("foo"); one.add("bar");
List<String> two = new ArrayList<>(); two.add("foo"); two.add("baz");

one.retainAll(two);
System.out.println(one);

将输出:

[foo]

Ideone demo