2016-05-23 77 views
-1

與Java新的IM(剛剛開始一個課程2周前)。我有2個txt文件1.txt和2.txt,文件1有3個名字(peter,ann和albert)文件2(peter,lennon和smeagol)。如何在兩個* .txt文件中找到相同的名稱?

我必須編寫一個讀取文件的程序,然後比較並回答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 
+0

使用'retainAll',而不是'removeAll'。 –

+0

非常感謝,我肯定是非常傾倒的問題,我希望我會很快好起來。再次感謝。 – junior

回答

0

迭代通過數組或做比較:

if(string1.equals(string2)){ 
    print(string1) 
} 
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

相關問題