2016-10-06 5 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"); 
    } 
} 

출력에 대한 명확화.

복제본이 있는지 여부에 따라 출력이 UNIQUE 또는 NOT 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(); 
관련 문제