检查arraylist中的先前输入

ben*_*ben 0 java arraylist

我想知道如何检查以前存储在arraylist中的用户输入.

例如,我要求用户输入我存储在arraylist中的字母.我需要确保他们不再猜相同的信,但我不确定如何.任何提示都表示赞赏.

    Scanner scan = new Scanner(System.in);
    ArrayList<String>guesses=new ArrayList<String>();

    System.out.println("Enter a letter");
    String userInput = scan.next();
    guesses.add(userInput);
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

使用HashSet可以更好地使用该功能,因为在HashSet中搜索现有值比在ArrayList中更快.

Scanner scan = new Scanner(System.in);
Set<String> guesses=new HashSet<String>();

System.out.println("Enter a letter");
String userInput = scan.next();
if (guesses.contains(userInput)) {
    // the user repeated a guess
} else {
    guesses.add(userInput);
}
Run Code Online (Sandbox Code Playgroud)

当然,如果您一次只接受一个字符,则可以使用一个简单的数组来查找是否重复猜测:

Scanner scan = new Scanner(System.in);
boolean[] guesses=new boolean[26];

System.out.println("Enter a letter");
String userInput = scan.next();
char c = userInput.charAt(0);
if (c >= 'a' && c <= 'z' && !guesses[c-'a']) {
    guesses[c-'a']=true;
    // this is a valid guess
} else {
    // this is an invalid guess
}
Run Code Online (Sandbox Code Playgroud)