package test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Scanner;
/* 1.定义学生类,包含姓名(String name),性别(String gender),年龄(int age)三个属性,
生成空参有参构造,set和get方法,toString方法
2.键盘录入6个学员信息(录入格式:张三,男,25),要求有两个相同的信息,
将6个学员信息存入到ArrayList集合中
3.将存有6个学员信息的ArrayList集合对象写入到D:\\StudentInfo.txt文件中
4.读取D:\\StudentInfo.txt文件中的ArrayList对象并遍历打印
5.对ArrayList集合中的6个学生对象进行去重,将去重后的结果利用PrintWriter流写入到
E:\\StudentInfo.txt文件中(写入格式:张三-男-25)
*/
/**
* 学生类
* @author mingming
* @version v1.0
*/
class NewStudent implements Serializable {
private static final long serialVersionUID = 5263607791087489049L;
private String name;
private String gender;
private String age;
public NewStudent(String name, String gender, String age) {
super();
this.name = name;
this.gender = gender;
this.age = age;
}
public NewStudent() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", gender=" + gender + ", age=" + age + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((gender == null) ? 0 : gender.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
NewStudent other = (NewStudent) obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (gender == null) {
if (other.gender != null)
return false;
} else if (!gender.equals(other.gender))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
public class Test12 {
public static void main(String[] args) {
// 创建集合存储学生信息
ArrayList<NewStudent> list = new ArrayList<>();
//存入学生数据
storage(list);
// 序列化,将数据写入硬盘文件中
//serilize(list);
// 反序列化
//disSerilize();
//去重存储
reStorage(list);
}
/**
* 对ArrayList集合中的6个学生对象进行去重,将去重后的结果利用PrintWriter流写入到
* h:\\a\\StudentInfo.txt文件中
* @param list 存储学生的集合
*/
private static void reStorage(ArrayList<NewStudent> list) {
ArrayList<NewStudent> newList=new ArrayList<>();
for (NewStudent s : list) {
if(!newList.contains(s)){
newList.add(s);
}
}
/*for (NewStudent student : newList) {
System.out.println(student.getName());
}*/
//将去重后的学生信息通过打印流写入到文件
try {
PrintStream ps=new PrintStream("h:\\a\\StudentInfo.txt");
for(NewStudent s:newList){
ps.println(s.getName()+"-"+s.getGender()+"-"+s.getAge());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
/**
* 反序列化,将文件中存储的集合中的学生信息打印出来
*/
private static void disSerilize() {
try {
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("h:\\StudentInfo.txt"));
Object obj=ois.readObject();
if(obj instanceof ArrayList){
ArrayList list=(ArrayList)obj;
for (Object object : list) {
if(object instanceof NewStudent){
NewStudent s=(NewStudent)object;
System.out.println("姓名:"+s.getName()+" 性别:"+s.getGender()+" 年龄:"+s.getAge());
}
}
}
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 序列化
* @param list 序列化对象
*/
private static void serilize(ArrayList<NewStudent> list) {
try {
ObjectOutputStream ops = new ObjectOutputStream(new FileOutputStream("h:\\StudentInfo.txt"));
ops.writeObject(list);
ops.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 存入学生数据
* @param list 存储集合
*/
private static void storage(ArrayList<NewStudent> list) {
// 键盘录入
Scanner sc = new Scanner(System.in);
// NewStudent s = null;
String name = null;
String gender = null;
String age = null;
for (int x = 1; x <= 6; x++) {
System.out.println("请输入第" + x + "个学生的信息:");
System.out.print("姓名:");
name = sc.nextLine();
System.out.print("性别:");
gender = sc.nextLine();
System.out.print("年龄:");
age = sc.nextLine();
NewStudent s = new NewStudent(name, gender, age);
list.add(s);
}
}
}