텍스트 파일의 단어 목록이 모두 고유한지 또는 HashSet을 사용하여 복제본이 있는지 알려주는 프로그램을 작성 중입니다. 중복이있는 경우 유일한 출력은 "NOT_UNIQUE"이어야하며 중복이 없으면 "UNIQUE"가 출력되어야합니다.HashSet을 테스트 할 때 루프에서 하나의 출력 만 얻는 방법
이 방법은 파일의 단어를 HashSet에 추가하는 것이고 단어가 중복 될 수 없기 때문에 단어를 추가 할 수 없다고 생각합니다. 나는 이미 프로그램을 만들었지 만, 프로그램이 끝날 때 한 번만하는 것이 아니라 모든 단어에 대해 "UNIQUE"를 출력합니다. 이것은 while 루프와 infile.readLine()의 사용과 관련이 있다고 생각합니다.하지만 여기에서 무엇을해야할지 모르겠습니다. 도와 줘서 고마워. 당신의 BufferedReader
각 줄 읽기에서 읽을 준비하는 동안 당신은 루프에 UNIQUE
또는 NOT_UNIQUE
출력을 인쇄하는
import java.io.*;
import java.util.*;
public class Lab5
{
public static void main (String[] args) throws Exception
{
HashSet<String> set = new HashSet<String>();
BufferedReader infile = new BufferedReader(new FileReader(args[0]));
while (infile.ready())
{
String word = infile.readLine();
if (!set.add(word))
System.out.println("NOT_UNIQUE \n");
else
System.out.println("UNIQUE \n");
}
}
}
대답은 Berger 's보다 효율적이지만 삭제되면 스트림을 닫지 않습니다 (OP는 그다지 신경 쓰지 않습니다). – Mena