查找在我定义的类列表中是否存在具有给定变量值的元素

时间:2016-04-02 17:03:04

标签: java list arraylist methods

我已定义了User类:

    public class User
    {
        public String id;
        public String passWord;

        public User(String id, String passWord)
        {
            this.id = id;
            this.passWord = passWord;
        }
    }

然后我创建了一个用户列表:

public static void main(String [] args)     {

    List<User> users = new ArrayList<User>();
    users.add(new User("u1", "abc"));
    users.add(new User("u2", "aaa"));
    users.add(new User("u3", "bba"));

要使用给定的ID和密码在列表中查找用户,我执行了以下操作:

Scanner input = new Scanner(System.in);
System.out.print("User: ");
String user = input.next();
System.out.print("Password: ");
String pass = input.next();
int N = -1;
for (int n = 0; n < medicos.size(); n++)
{
    if (user.equals(users.get(n).id) && pass.equals(users.get(n).passWord))
        {
            N = n;
        }
    }

是否有更简单的方法来获取包含给定ID和密码的列表元素,例如使用类似于包含的方法?

1 个答案:

答案 0 :(得分:2)

使用HashMap。如果需要,您仍然可以使用ArrayList User,但您也可以将用户名和密码添加到HashMap,其中用户名为密钥,密码为值。所以,举个例子,你可以这样做:

Map<String, String> users = new HashMap<>();
users.put("u1", "abc");
users.put("u2", "aaa");
users.put("u3", "bba");

Scanner input = new Scanner(System.in);
System.out.print("User: ");
String user = input.next();
System.out.print("Password: ");
String pass = input.next();

String pword;
if (users.containsKey(user)) {
    pword = users.get(user);
}

现在,变量pword包含名为&#34; user&#34;的用户的密码。 (从Scanner获得。)