Я хотел бы сказать, что причина, по которой вы застряли, состоит в том, что для HashMap, который отображает строки имени пользователя в пароли, потребуется HashMap<String, String> uc
, но вы создали HashMap<Integer, User> uc
, и это исключает значениеиспользуя HashMap!Если вы планируете использовать «оптимизацию», которую обеспечивает java.util.HashMap - это означает, что строки «хэшируются» для быстрого и простого поиска в структуре данных, вы должны сохранить HashMap следующим образом:
HashMap<Integer, User> uc = new HashMap <Integer, User>(); {
uc.put("user1", "pass1");
uc.put("user2", "pass2");
uc.put("user3", "pass3");
uc.put("user4", "pass4");
}
Таким образом, вы можете искать комбинации имени пользователя и пароля следующим образом:
public boolean checkPassword(String enteredUserName, String enteredPassword)
{
String userPassword = uc.get(enteredUserName);
return enteredPassword.equals(userPassword);
}
Если вам абсолютно необходимо использовать структуру данных «Пользователь» в вашей HashMap, другой альтернативой будет:
HashMap<Integer, User> uc = new HashMap <Integer, User>(); {
uc.put("user1", new User("user1", "pass1"));
uc.put("user2", new User ("user2", "pass2"));
uc.put("user3", new User ("user3", "pass3"));
uc.put("user4", new User ("user4", "pass4"));
}
, в этот момент получение пароля может выглядеть следующим образом:
public boolean checkPassword(String enteredUserName, String enteredPassword)
{
String userPassword = uc.get(enteredUserName).getPassword();
return enteredPassword.equals(userPassword);
}
Я не уверен, что такое "Integer" (идентификатор пользователя?), Который вы использовали для инициацииHashMap<Integer, User>
- HOWEVER - самое важное, что нужно понять, это то, что целью HashMap является то, что «поиск» в таблице намного быстрее, потому что функция «Hash»выполняется на значение поиска.
Если вы не планируете искать вещи с помощью «Целочисленного идентификатора пользователя», то сохранение его в качестве ключа для HashMap вообще не имеет большого значения.
Ваш итератор должен будет перебрать всю таблицу, чтобы найти пользователя:
public boolean checkPassword(String enteredUserName, String enteredPassord)
{
Iterator<Entry<Integer, User>> it = uc.entrySet().iterator();
while (it.hasNext()){
//some code to validate user input against HashMap entries
User u = it.next().getValue();
if (u.getUserName().equals(enteredUserName())
return u.getPassword().equals(enteredPassword);
}
}