java - 如果 HashMap 中存在值则登录用户

标签 java hashmap

嘿,大家好,我有一个用户注册然后登录的表单。注册用户名和密码的数据存储在这样的 HashMap 中:

if (usersMap.containsKey("username")) {
    JOptionPane.showMessageDialog(LoginForm.this, "User already exists !", "ERROR", JOptionPane.ERROR_MESSAGE);
} else {
    usersMap.put("username", registerUser.getText());
    usersMap.put("userpassword", registerPassword.getPassword());
    JOptionPane.showMessageDialog(LoginForm.this, "Registration Successful !!", "SUCCESS", JOptionPane.PLAIN_MESSAGE);
}

我还检查用户名中的重复条目,效果很好

当我尝试登录用户时出现问题。

这是我的登录代码:

private void clickEventRightPanel() {
        loginBtn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                unameLog = loginUser.getText();
                logPass = loginPassword.getPassword();

                if (usersMap.values().contains(loginUser.getText()) && usersMap.values().contains(loginPassword.getPassword())) {
                    JOptionPane.showMessageDialog(LoginForm.this, "Login sucessfull !!", "SUCCESS", JOptionPane.PLAIN_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(LoginForm.this, "User does not exist ! Try again !", "ERROR", JOptionPane.ERROR_MESSAGE);
                }

            }
        });

    }

关于这里可能出什么问题的任何想法吗?

最佳答案

您没有正确使用或检查 map 。首先,您需要将用户名映射到密码:

usersMap.put(registerUser.getText(), registerPassword.getPassword());

现在,每当您尝试登录时,您都会尝试在 map 中查找用户名,如果找到用户,则会将存储的密码与登录密码进行比较:

if (usersMap.containsKey(loginUser.getText())) {
    String storedPassword = usersMap.get(loginUser.getText());
    if (storedPassword.equals(loginPassword.getPassword())) {
        // valid login
    } else {
        // invalid login
    }
} else {
    // invalid login
}

关于java - 如果 HashMap 中存在值则登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27411639/

相关文章:

android - 在应用程序中存储 hashmap 数据

java - 无法将对象转换为 HashMap

java - 为新的 JVM 语言重用 Java 编译器后端的有效方法

java - 签名者信息与同一包中其他类的签名者信息不匹配

java - HashMap使用对象实现一键多值

java | XML 按大小分割 | HashMap 性能问题 | OOM 堆空间错误

java - 除了堆大小之外,还有什么会限制 HashMap 可以容纳的元素数量

java - shell脚本与java运行时不一致

java - 在日期和时间之间用 "T"解析时间戳

java - 验证 Jackson 中的嵌套对象