2014-03-02 46 views
0

我如何检查集合中的元素是否存在?如何查找元素?

public class Account 
{ 
    public Account(String username, String password, String lastname, String firstname){ 
     this.username = username; 
     this.password = password; 
     this.firstname = firstname; 
     this.lastname = lastname; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public String getFirstname() { 
     return firstname; 
    } 

    public String getLastname() { 
     return lastname; 
    } 


    private String username; 
    private String password; 
    private String firstname; 
    private String lastname; 
public boolean equals(Object obj) 
    { 
     boolean result = false; 
     if (obj != null && obj instanceof Account) 
     { 
      Account p = (Account)obj; 
      if (getUsername().equals(p.getUsername()) 
       && getPassword() == p.getPassword()) 
      { 
       result = true; 
      } 
     } 
     return result; 
    } 
} 

我的servlet

Set<Account> acc = new HashSet<Account>(); 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     doPost(request, response); 
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     response.setContentType("text/html"); 
     acc.add(new Account("test1", "pass123", "Boom", "Bang")); 
      acc.add(new Account("test2", "pass123", "Beam", "Beng")); 
     PrintWriter out = response.getWriter(); 
     String username = ""; 
     String password = ""; 


    if(request.getParameter("Username") != null){ 
     username = request.getParameter("Username"); 
    } 
    if(request.getParameter("Password") != null){ 
     password = request.getParameter("Password"); 
    } 

    Account act1 = new Account(username, password, "", "",""); 

      /* 
      Works only on hard code 
      Account act1 = new Account("test1", "pass123", "", "",""); 
      */ 

     out.print("<html>"); 
     out.print("<head><link href='layoutit/css/bootstrap.min.css' rel='stylesheet'>" 
       + "<link href='layoutit/css/style.css' rel='stylesheet'>"); 
     out.print("<title></title>"); 
     out.print("</head>"); 
     out.print("<body"); 
     for (Account p : acc) 
     { 
      if(p.equals(act1){ 

       out.print("<h3>Click <a href='displayuser.html'>here</a> to continue.</h3>"); 
      } 
      else{ 
       out.print("<h1>Invalid user account entered.Click <a href='index.html'>here</a> to login.</h1>"); 
      } 
     } 
     out.print("</body>"); 
     out.print("</hmtl>"); 
     out.close(); 
    } 
+0

阅读HashSet'的'的Javadoc。 –

回答

1

设置有一个 '包含' 方法以及任何类型的扩展/实现集合。你必须小心地为你的账户类型实现equals和hashcode。您可以在Object type文档中找到详细信息。

1

覆盖在Accountequals(Object)(用正确执行),然后执行:

boolean containsAccount = acc.contains(some_account) 

其中some_accountinstanceofAccount

+0

我会在我的servlet中执行containsAccount吗? –

+0

@KarlxSwanovski正确 –