2016-10-06 106 views
-1

我想寫代碼將讀取一個文件並檢測文件是否有重複。檢測一個字文件是否包含重複

這是我目前擁有的代碼。它檢測到重複,但輸出不是我想要的。我希望它只輸出一次。

set<String> set = new Hashset<>(); 
ArrayList<String>list = new ArrayList<String>(); 
Scanner infile = new Scanner(new File args[0])); 
while(infile.hasNext()){ 
    list.add(infile.next()); 
} 
infile.close(); 


for(String word : list){ 
    if(set.add(word) == false){ 
     System.out.println("NOT UNIQUE"); 
    }else { 
     System.out.println("UNIQUE"); 
    } 
} 

澄清輸出。

我想輸出只是UNIQUENOT UNIQUE根據是否存在重複。

+0

_「輸出是不是我想要它做的是不過,我希望它只是輸出一次。」 _請解釋更多。 – Arvind

回答

0

如果您只希望打印一次,然後使用布爾變量來存儲結果,然後再打印出來。

例如

boolean isUnique = true; 
for(String word : list){ 
    if(set.add(word) == false){ 
     isUnique = false; 
     // can break; 
     break 
    } 
} 

System.out.println ("isUnique: " + isUnique); 
0

這裏的另一種選擇是使用HashMap而不是列表。如果遇到重複的,你可以立即停止遍歷文件:

Map<String, Boolean> map = new HashMap<>(); 
boolean isUnique = true; 
Scanner infile = new Scanner(new File args[0])); 
while (infile.hasNext()) { 
    String next = infile.next(); 
    if (map.get(next) != null) { 
     isUnique = false; 
     break; 
    } 
    map.put(next, true); 
} 
if (isUnique) { 
    System.out.println("UNIQUE"); 
} 
else { 
    System.out.println("NOT UNIQUE"); 
} 
infile.close(); 
相關問題