2017-01-27 15 views
-1

私のコードでは、ドライブに2つのファイルがあります。これらのファイルにはテキストがあり、その文字列をコンソールに表示し、繰り返し文字列を削除して、繰り返し文字列を2回表示するのではなく1回表示します。重複する文字列を削除するにはどうすればよいですか?

コード:

answer: 
hi hello 
how are you 
hi ya 
i am fine 

しかし、私は、文字列の両方を比較したいと同じ文字列を繰り返した場合、その文字列を一度に表示する必要があります。

public class read { 
public static void main(String[] args) { 
    try{ 
     File file = new File("D:\\file1.txt"); 
     FileReader fileReader = new FileReader(file); 
     BufferedReader br = new BufferedReader(fileReader); 
     StringBuffer stringBuffer = new StringBuffer(); 
     String line; 
     while((line = br.readLine()) != null){ 
      stringBuffer.append(line); 
      stringBuffer.append("\n"); 
     } 
     fileReader.close(); 
     System.out.println("Contents of file1:"); 
     String first = stringBuffer.toString(); 
     System.out.println(first); 

     File file1 = new File("D:\\file2.txt"); 
     FileReader fileReader1 = new FileReader(file1); 
     BufferedReader br1 = new BufferedReader(fileReader1); 
     StringBuffer stringBuffer1 = new StringBuffer(); 
     String line1; 
     while((line1 = br1.readLine()) != null){ 
      stringBuffer1.append(line1); 
      stringBuffer1.append("\n"); 
     } 
     fileReader1.close(); 
     System.out.println("Contents of file2:"); 
     String second = stringBuffer1.toString(); 
     System.out.println(second); 

     System.out.println("answer:"); 
     System.out.println(first+second); 

    }catch (IOException e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 
} 
} 

出力があります。私は1つの重複文字列を削除する必要がありますように「HI」が両方の文字列で発見され

answer: 
hi hello 
how are you 
ya 
i am fine 

:私は期待し

出力は次のようです。 どうすればそれを手伝ってください。 ありがとうございます。

+0

は[HashSetの](https://docs.oracle.com/javase/7/docs/api/java/を使用しますutil/HashSet.html)。 –

答えて

1

あなたが重複した単語を解析するために、この方法をあなたの行を渡すことができます。

// store unique previous words 
static Set<String> words = new HashSet<>(); 

static String removeDuplicateWords(String line) { 
    StringJoiner sj = new StringJoiner(" "); 
    // split on whitespace to get distinct words 
    for (String word : line.split("\\s+")) { 
     // try to add word to the set 
     if (words.add(word)) { 
      // if the word was added (=not seen before), append to the result 
      sj.add(word); 
     } 
    } 
    return sj.toString(); 
} 
+0

StringJoiner Java8ですか? –

+0

@ScaryWombatはい。あなたは 'StringBuilder'も使うことができます。ちょっとちょっと大変です。 – shmosel

+0

なぜこれが控除されたのですか? – shmosel

関連する問題