A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程曦 中级黑马   /  2015-8-28 23:04  /  2929 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
假设用户类和用户操作接口已经写好,现在需要写一个类来实现用户操作接口的两个方法:登录和注册。最后的测试类暂时不管。
现在有一版用数组写好的类(如下),怎么改成集合?
  1. /**
  2. * 用户操作实现类
  3. *
  4. * @author itcast 如何实现呢? 如果是注册一个用户,用User保存即可。 但是,注册肯定不止一个用户,所以我们得想想用什么存储?
  5. *         目前我们学过的能够存储的:对象,对象数组。 通过分析,我们最终选择对象数组。 问题:用对象数组,就得定义数组,定义数组,就得知道长度。
  6. *         不知道,我也不知道。所以,对象数组不够好。最终选择集合。 不过,集合还没学呢,所以,我们还是只能使用对象数组。 自己给一个固定长度:5
  7. */
  8. public class UserDaoImpl implements UserDao {
  9.         // 定义成员变量的数组
  10.         private static User[] users = new User[5];
  11.         private static int index = 0;

  12.         @Override
  13.         public boolean isLogin(String username, String password) {
  14.                 /*
  15.                  * 遍历数组,获取到每一个对象,然后再拿对象的用户名和密码和传递过来的用户名和密码进行比较
  16.                  */
  17.                 boolean flag = false;

  18.                 for (int x = 0; x < users.length; x++) {
  19.                         User user = users[x];
  20.                         // 判断用户是否为null
  21.                         if (user != null) {
  22.                                 if (user.getUsername().equals(username)
  23.                                                 && user.getPassword().equals(password)) {
  24.                                         flag = true;
  25.                                         break;
  26.                                 }
  27.                         }
  28.                 }

  29.                 return flag;
  30.         }

  31.         @Override
  32.         public void regist(User user) {
  33.                 users[index++] = user;
  34.         }
  35. }
复制代码




4 个回复

倒序浏览
本帖最后由 liuch111 于 2015-8-29 09:48 编辑
  1.                   public class UserDaoImpl implements UserDao {
  2.                           // 定义成员变量的数组
  3.                           private static ArrayList al=new ArrayList();
  4.                           private static int index = 0;

  5.                           @Override
  6.                           public boolean isLogin(String username, String password) {
  7.                                   /*
  8.                                    * 遍历数组,获取到每一个对象,然后再拿对象的用户名和密码和传递过来的用户名和密码进行比较
  9.                                    */
  10.                                   boolean flag = false;

  11.                                   for (User  user : al ) {
  12.                                           // 判断用户是否为null
  13.                                           if (user != null) {
  14.                                                   if (user.getUsername().equals(username)
  15.                                                                   && user.getPassword().equals(password)) {
  16.                                                           flag = true;
  17.                                                           break;
  18.                                                   }
  19.                                           }
  20.                                   }

  21.                                   return flag;
  22.                           }

  23.                           @Override
  24.                           public void regist(User user) {
  25.                                   al.add(user);
  26.                           }
  27.                   }
复制代码

回复 使用道具 举报

  1. import java.util.*;

  2. class User
  3. {
  4.         private String userName;
  5.         private String password;
  6.         String getUserName()
  7.         {
  8.                 return userName;
  9.         }
  10.         String getPassword()
  11.         {
  12.                 return password;
  13.         }
  14.        
  15.         User(String userName,String password)
  16.         {
  17.                 this.userName = userName;
  18.                 this.password = password;
  19.         }
  20.         public int hashCode()//复写hashCode方法  ,用户的登录名不能重复
  21.             {            
  22.                 return userName.hashCode();  
  23.             }  
  24.         public boolean equals(Object obj)
  25.         {
  26.                 if(!(obj instanceof User))
  27.                 {
  28.                         return false;
  29.                 }
  30.                 User u = (User)obj;
  31.                 return this.userName.equals(u.userName)&&this.password==u.password;
  32.         }
  33. }

  34. class UserManagement extends User
  35. {  

  36.         UserManagement(String userName, String password) {
  37.                 super(userName, password);
  38.         }
  39.         //定义用户集合
  40.         static HashSet hs = new HashSet();  
  41.     public static void main(String[] args)   
  42.     {  
  43.             //用户李四注册
  44.             regist("李四","123456");
  45.             //用户李四登录
  46.             logIn("李四","123456");
  47.         
  48.     }  
  49.     //注册方法。
  50.     public static boolean regist(String userName,String password)
  51.     {
  52.            
  53.             return         hs.add(new User(userName,password));
  54.     }
  55.     //登录方法
  56.     public static boolean logIn(String userName,String password)
  57.     {
  58.             boolean flag = false;
  59.             for(Iterator it = hs.iterator(); it.hasNext();)  
  60.         {  
  61.             User p = (User) it.next();
  62.             flag = userName.equals(p.getUserName())&&password.equals(p.getPassword());
  63.             if(flag)
  64.                     return true;
  65.         }  
  66.             return false;
  67.     }
  68. }  
复制代码
回复 使用道具 举报
都好高大上的感觉。
回复 使用道具 举报
这个相对简单,只是把数组改写成集合就好,判断代码块不需要变动。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马