Io流练习:键盘录入6个学员信息(录入格式:张三,男,25),要求有两个相同的信息,将6个学员信息存入到ArrayList集合中

/*分析以下需求,并用代码实现
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;

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;
  }
 
}







//学生类在下一篇里
//有一部分参考了网上一些前辈的代码,比如http://bbs.csdn.net/topics/392087163

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值