以前保存到集合里面的基本上都是基本数据类型和字符串,今天带大家了解一下,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(“登录失败”);
}
}