集合和文件的操作

以前保存到集合里面的基本上都是基本数据类型和字符串,今天带大家了解一下,List和Map集合怎么保存到文件里面,并取出来的过程。下面简单做一个登录和注册的过程:

首先先创建一个Users类,此类必须序列化
public class Users implements Serializable {
private String name;
private String password;

@Override
public String toString() {
    return "Users{" +
            "name='" + name + '\'' +
            ", password='" + password + '\'' +
            '}';
}

public Users() {
}

public Users(String name, String password) {
    this.name = name;
    this.password = password;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

}

然后再新建一个操作类Operation,此类完成注册和登录功能

public class Operation{
/**
* 注册方法
* @param name
* @param password
*/
public void reg(String name,String password){
try {
List list=new ArrayList();
Users u=new Users(name,password);
list.add(u);

        ObjectOutputStream  oos=new ObjectOutputStream(new FileOutputStream("d:/users.txt",true));
        oos.writeObject(list);
        oos.close();
        System.out.println("注册成功");
    } catch (Exception e) {
        e.printStackTrace();
    }

}
/**
* 登录方法
* @param name
* @param password
*/
public void login(String name,String password){
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(“d:/users.txt”));
List li= (ArrayList) in.readObject();
in.close();
for(Users use:li){
if(use.getName().equals(“王老师”) && use.getPassword().equals(“123”)){
System.out.println(“登录成功”);
break;
}else {
System.out.println(“登录失败”);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

最后新建一个测试类Test,对注册和登录方法进行测试

public class Test {
public static void main(String[] args) {
TestUsers tu= new TestUsers();
tu.reg(“王老师”,“123”);
tu.login(“王老师”,“123”);
}
}

运行效果:
注册成功
登录成功

Map集合的操作和List差不多,只是存放和读取的方式不同而已。省去相同的注册和登录代码,只摘抄核心代码进行演示,注册核心代码
Map<Integer,Users> map=new HashMap<Integer,Users>();
map.put(1,u);

        oos.writeObject(map);

登录核心代码:
Map<Integer,Users> map= (HashMap<Integer, Users>) in.readObject();
Set set=map.keySet();
for (int i:set){
Users u=map.get(i);
if(u.getName().equals(“王老师”) && u.getPassword().equals(“123”)){
System.out.println(“登录成功”);
break;
}else {
System.out.println(“登录失败”);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值