黑马程序员技术交流社区
标题:
如何用集合改写用户登录与注册程序
[打印本页]
作者:
程曦
时间:
2015-8-28 23:04
标题:
如何用集合改写用户登录与注册程序
假设用户类和用户操作接口已经写好,现在需要写一个类来实现用户操作接口的两个方法:登录和注册。最后的测试类暂时不管。
现在有一版用数组写好的类(如下),怎么改成集合?
/**
* 用户操作实现类
*
* @author itcast 如何实现呢? 如果是注册一个用户,用User保存即可。 但是,注册肯定不止一个用户,所以我们得想想用什么存储?
* 目前我们学过的能够存储的:对象,对象数组。 通过分析,我们最终选择对象数组。 问题:用对象数组,就得定义数组,定义数组,就得知道长度。
* 不知道,我也不知道。所以,对象数组不够好。最终选择集合。 不过,集合还没学呢,所以,我们还是只能使用对象数组。 自己给一个固定长度:5
*/
public class UserDaoImpl implements UserDao {
// 定义成员变量的数组
private static User[] users = new User[5];
private static int index = 0;
@Override
public boolean isLogin(String username, String password) {
/*
* 遍历数组,获取到每一个对象,然后再拿对象的用户名和密码和传递过来的用户名和密码进行比较
*/
boolean flag = false;
for (int x = 0; x < users.length; x++) {
User user = users[x];
// 判断用户是否为null
if (user != null) {
if (user.getUsername().equals(username)
&& user.getPassword().equals(password)) {
flag = true;
break;
}
}
}
return flag;
}
@Override
public void regist(User user) {
users[index++] = user;
}
}
复制代码
作者:
liuch111
时间:
2015-8-28 23:04
本帖最后由 liuch111 于 2015-8-29 09:48 编辑
public class UserDaoImpl implements UserDao {
// 定义成员变量的数组
private static ArrayList al=new ArrayList();
private static int index = 0;
@Override
public boolean isLogin(String username, String password) {
/*
* 遍历数组,获取到每一个对象,然后再拿对象的用户名和密码和传递过来的用户名和密码进行比较
*/
boolean flag = false;
for (User user : al ) {
// 判断用户是否为null
if (user != null) {
if (user.getUsername().equals(username)
&& user.getPassword().equals(password)) {
flag = true;
break;
}
}
}
return flag;
}
@Override
public void regist(User user) {
al.add(user);
}
}
复制代码
作者:
Ci功
时间:
2015-8-29 10:40
import java.util.*;
class User
{
private String userName;
private String password;
String getUserName()
{
return userName;
}
String getPassword()
{
return password;
}
User(String userName,String password)
{
this.userName = userName;
this.password = password;
}
public int hashCode()//复写hashCode方法 ,用户的登录名不能重复
{
return userName.hashCode();
}
public boolean equals(Object obj)
{
if(!(obj instanceof User))
{
return false;
}
User u = (User)obj;
return this.userName.equals(u.userName)&&this.password==u.password;
}
}
class UserManagement extends User
{
UserManagement(String userName, String password) {
super(userName, password);
}
//定义用户集合
static HashSet hs = new HashSet();
public static void main(String[] args)
{
//用户李四注册
regist("李四","123456");
//用户李四登录
logIn("李四","123456");
}
//注册方法。
public static boolean regist(String userName,String password)
{
return hs.add(new User(userName,password));
}
//登录方法
public static boolean logIn(String userName,String password)
{
boolean flag = false;
for(Iterator it = hs.iterator(); it.hasNext();)
{
User p = (User) it.next();
flag = userName.equals(p.getUserName())&&password.equals(p.getPassword());
if(flag)
return true;
}
return false;
}
}
复制代码
作者:
backin
时间:
2015-8-30 17:06
都好高大上的感觉。
作者:
朱朱生
时间:
2015-8-30 22:42
这个相对简单,只是把数组改写成集合就好,判断代码块不需要变动。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2