2016-05-23 14 views
-1

Im new with java(2週間前にコースを始めたばかり)。2つの* .txtファイルで等しい名前を見つけるにはどうすればよいですか?

私は2つのtxtファイル1.txtと2.txtを持っています。ファイル1には3つの名前(ピーター、アンとアルバート)ファイル2(ピーター、レノンとスメアオール)があります。

私はsのファイルを読み込むプログラムを記述する必要があり、その後、比較し、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'を。 –

+0

本当にありがとう、私は間違いなくダンプの質問だった、私はすぐに良くなるだろうと思う。再度、感謝します。 – junior

答えて

0

反復して比較します:

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

あなたは、例えば、retainAllを使用して2つのコレクションとの交点を得ることができます

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

代わりに `removeAll`の
関連する問題