要求:控制台输入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 + "]"; } }