/*分析以下需求,并用代码实现
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)*/
package pxyhomeworkday10;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
public class demo {
public static void main(String[] args) throws IOException, IOException, ClassNotFoundException {
ArrayList<Student> sl=new ArrayList<>();
sl.addAll(getStuInfo());//(2)将录入的6个学员信息存入到ArrayList集合中
duixiangshuruliu(sl);//(3)调用方法,将存有6个学员信息的ArrayList集合对象写入到D:\\duixiang1.txt文件中
ArrayList<Student> al=readthe();//(4)读取D:\\duixiang1.txt文件中的ArrayList对象并遍历打印,并把对象列表存入al
//去重
HashSet<Student> hs=new HashSet<Student>();
for (int i = 0; i < al.size(); i++) {
hs.add(al.get(i));
}
dayinliu(hs);//(5)对ArrayList集合中的6个学生对象进行去重,将去重后的结果利用PrintWriter流写入到D:\\duixianglast.txt文件中
}//主程序末尾处
//(5)将去重后的结果利用PrintWriter流写入到D:\\duixianglast.txt文件中
public static void dayinliu(HashSet<Student> hs1) throws IOException{
PrintWriter pw=new PrintWriter(new FileWriter("D:\\duixianglast.txt"),true);
for (Student student : hs1) {
pw.println(student.getName()+"-"+student.getGender()+"-"+student.getAge());
}
pw.close();
}
public static ArrayList<Student> readthe() throws FileNotFoundException, IOException, ClassNotFoundException{
//(4)读取D:\\duixiang1.txt文件中的ArrayList对象并遍历打印
//读取的是对象,使用的是对象输入流,需要与对象输出流搭配
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("D:\\duixiang1.txt"));
Object obj=ois.readObject();
ArrayList<Student> list=(ArrayList<Student>) obj;
for (Student student : list) {
System.out.println(student);
}
ois.close();
return list;
}
//(3)将存有6个学员信息的ArrayList集合对象写入到D:\\duixiang1.txt文件中
//这里写入的是对象,使用的是对象输出流
public static void duixiangshuruliu(ArrayList<Student> al) throws IOException{
FileOutputStream fos=new FileOutputStream("D:\\duixiang1.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(al);
fos.close();
}
//(2)键盘录入6个学员信息的方法
public static ArrayList<Student> getStuInfo() {
Scanner sc = new Scanner(System.in);
ArrayList<Student> al = new ArrayList<>();
for (int i = 0; i < 6; i++) {
System.out.println("请输入第" + (i + 1) + "个学员信息:");
String s = sc.nextLine().trim();// 获取输入的信息,并去除首尾空格
String[] strings = s.split(",");// 将接收的字符串以 , 截取存入字符串数组中
al.add(new Student(strings[0], strings[1], Integer.parseInt(strings[2])));// 将学生信息添加到ArrayList集合中
}
return al;
}
public static ArrayList<Student> getStuInfo() {
Scanner sc = new Scanner(System.in);
ArrayList<Student> al = new ArrayList<>();
for (int i = 0; i < 6; i++) {
System.out.println("请输入第" + (i + 1) + "个学员信息:");
String s = sc.nextLine().trim();// 获取输入的信息,并去除首尾空格
String[] strings = s.split(",");// 将接收的字符串以 , 截取存入字符串数组中
al.add(new Student(strings[0], strings[1], Integer.parseInt(strings[2])));// 将学生信息添加到ArrayList集合中
}
return al;
}
}
//学生类在下一篇里
//有一部分参考了网上一些前辈的代码,比如http://bbs.csdn.net/topics/392087163