比较两个字符串与Hashmap <string,list <string =“”>&gt; </string,>

时间:2015-01-08 20:10:22

标签: java

我尝试使用小型用户管理系统。 我用这段代码存储了所有数据:

public static HashMap<String, List<String>> loginData = new HashMap<String, List<String>>();

密钥是用户名,值(在列表中)是密码,名字,姓氏,ID。

如何检查输入的用户名和密码是否符合我的HashMap中的数据?

这是我检查用户名的方式:

if (loginData.containsKey(loginname) == true){

3 个答案:

答案 0 :(得分:1)

您可以像这样访问列表:

for (Map.Entry<String, List<String>> curData : loginData.entrySet()) {
    String username = curData.getKey();
    List<String> listLoginData = curData.getValue();

    String password = listLoginData.get(0);
    String first_name = listLoginData.get(1);
    ....
}

我的建议是使用对象列表,并使用此参数创建一个类,如此

public class LoginData {
    private String password;
    private String firstName;


    public LoginData(String password, String firstName){
       this.password = password;
       this.first_name =  firstName;
    }

  public String getPassword(){
    return password;
  }
  public String getFirstName(){
    return firstName;
  }
}

然后,使用这样的东西:

for (Map.Entry<String, List<LoginData>> curData : loginData.entrySet()) {
    String username = curData.getKey();
    LoginData loginDataObject = curData.getValue();

    String password = loginDataObject.getPassword();
    String first_name = loginDataObject.getFirstName();
    ....
}

答案 1 :(得分:0)

您可以使用

获取HashMap中与特定键相关联的值
List<String> values = loginData.get(loginname);

答案 2 :(得分:0)

    boolean validateLogin(String username, String password) {
      List<String> userDetails = loginData.get(username);
      return userDetails != null &&                
           userDetails.size() == 4 &&
           password.equals(userDetails.get(0));
    }