2016-01-20 152 views
0

下面是一個代碼,我試圖從文件夾(測試器)中獲取文件的內容,該文件夾中有一些文本文件。之後,我必須從文本文件中出現的所有單詞中作出字典。我得到的字(字符串),但他們重複,我不得不刪除重複的話。刪除陣列/陣列列表中的重複字符串

實施例:

文件1 - John is coding和file2 - John is really not coding

所以我想要的輸出是 - John is coding really not,即不重複。

此外,我必須製作所有單詞和它所在的相應文本文件的矩陣(就像索引器一樣)。 例子:

   file1   file2 


    John  1    1 

     is  1    1 

    coding  1    1 

    really  0    1 

    not  0    1 

任何幫助將非常感激,我堅持。

public static void main(String[] args) throws IOException { 
    File folder = new File("/home/gaurav/Tester"); 
    File[] listOfFiles = folder.listFiles(); 
    ArrayList<String> array = new ArrayList<String>(); 

    for (int i = 0; i < listOfFiles.length; i++) { 
     File file = listOfFiles[i]; 

     if (file.isFile() && file.getName().endsWith(".txt")) { 
      String content = FileUtils.readFileToString(file); 
      String[] a = content.split(" "); 

      for (String s : a) { 
       if (!array.contains(a)) { 
        array.add(s); 
       } 
      } 
     } 
    } 

    for (int j = 0; j < array.size(); j++) { 
     System.out.print(array.get(j)); 
    } 
}   

回答

0
 ArrayList<String> array = new ArrayList<String>(); 

一旦你有重複的數組,你可以這樣做:

array = new ArrayList<>(new LinkedHashSet<>(array)); 

設置將刪除重複項,因爲它喜歡它會持之以恆的順序

在這片您試圖不添加重複項的代碼:

 for(String s:a){ 

      if(!array.contains(a)) 
      array.add(s); 
     } 

你的錯誤是你正在檢查包含(a)而不是包含 也是一個好主意,將比較或添加它之前修剪s。所以做:

 for(String s:a){ 
      s = s.trim() 
      if(!array.contains(s)) 
      array.add(s); 

     } 
+0

「s.trim()」 工作長官......非常感謝。 –

0

使用Set,因爲它不包含重複元素:

Set<String> words = new HashSet<>(); 
// ... 
for(String word: a) { 
    words.add(word); 
}