Set程序

Set集合和IO流

要求:控制台输入n个学生信息,将学生信息保存到set集合。按照年龄大到小排序,并将n个学生信息写入到文本文件中,每个学生占一行录入。

import java.io.File;
import java.io.FileWriter;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;


public class HomeTest1 {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub

		/**
		 * 控制台输入n个学生信息
		 *  将学生信息保存到set集合
		 *  按照年龄大道小排序
		 *  然后就学生信息每行输入文件中
		 */		

		// 创建HashSet对象
		HashSet<Student> set = new HashSet<>();
		Student stu = null;
		while (true) {
			Scanner scanner = new Scanner(System.in);

			System.out.print("请输入用户姓名:");
			String name = scanner.nextLine();

			System.out.print("请输入用户密码:");
			String password = scanner.nextLine();

			System.out.print("请输入用户年龄:");
			String age1 = scanner.nextLine();
			int age = Integer.parseInt(age1);
			
			stu = new Student(name, password, age);

			set.add(stu);
			System.out.print("是否继续输入Y|N");
			String flag = scanner.nextLine();
			if(flag.equals("Y")) {
				continue;
			}else {
				break;
			}
		}
		// 使用匿名内部类进行对年龄排序
		Set<Student> sortSet = new TreeSet<Student>(new Comparator<Student>() {
			@Override
			public int compare(Student o1, Student o2) {
				return o2.getAge() - o1.getAge();// 降序排列
			}
		});
		// 将排序好的对象放入集合中
		sortSet.addAll(set);
		// c创建文件,用来保存学生信息
		File file = new File("E:/file/stu.txt");
		// 若文件不存在,则创建
		if (!(file.exists())) {
			file.createNewFile();
		}
		// 创建字符输出流
		FileWriter fw = new FileWriter(file, true);
		// 将学生信息每次写入到文件中
		for (Student s : sortSet) {
			fw.write(s.toString());
			fw.write("\r\n");
		}
		fw.close();	
	}	
}

Student对象:

public class Student {
	
	private String name;
	private String password;
	private Integer age;

	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Student(String name, String password, Integer age) {
		super();
		this.name = name;
		this.password = password;
		this.age = age;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", password=" + password + ", age=" + age + "]";
	}
}
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值