学生类: public class Student { private String name; private int age; private int chinese; private int math; private int english; public Student() { } public Student(String name, int age, int chinese, int math, int english) { this.name = name; this.age = age; this.chinese = chinese; this.math = math; this.english = english; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getChinese() { return chinese; } public void setChinese(int chinese) { this.chinese = chinese; } public int getMath() { return math; } public void setMath(int math) { this.math = math; } public int getEnglish() { return english; } public void setEnglish(int english) { this.english = english; } public int getSum(){ return this.chinese + this.math + this.english; } }
demo:
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.Comparator; import java.util.Scanner; import java.util.TreeSet; public class TreeSetToFileDemo { public static void main(String[] args) throws IOException { TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { //成绩总分从高到低 int num = o2.getSum() - o1.getSum(); //次要条件 int num2 = num == 0 ? o1.getChinese() - o2.getChinese() : num; int num3 = num2 == 0 ? o1.getMath() - o2.getMath() : num2; int num4 = num3 == 0 ? o1.getName().compareTo(o2.getName()) : num3; return num4; } }); //键盘录入学生数据 for (int i = 0;i<5;i++){ Scanner sc = new Scanner(System.in); System.out.println("请录入第"+(i+1)+"个学生信息:"); System.out.println("姓名:"); String name = sc.nextLine(); System.out.println("语文成绩:"); int chinese = sc.nextInt(); System.out.println("数学成绩:"); int math = sc.nextInt(); System.out.println("英语成绩:"); int english = sc.nextInt(); //创建学生对象 Student s = new Student(); s.setName(name); s.setChinese(chinese); s.setMath(math); s.setEnglish(english); //把学生对象添加到TreeSet集合中 ts.add(s); } //创建字符缓冲流输出对象 BufferedWriter bw = new BufferedWriter(new FileWriter("myexercise\\ts.txt")); //遍历集合得到每一个学生对象 for (Student s : ts){ //将学生对象的数据拼接成指定格式的字符串 //格式:姓名,语文成绩,数学成绩,英语成绩 StringBuilder sb = new StringBuilder(); sb.append(s.getName()).append(",").append(s.getChinese()).append(",").append(s.getMath()).append(",").append(s.getEnglish()).append(",").append(s.getSum()); //调用字符缓冲流对象的方法写数据 bw.write(sb.toString()); bw.newLine(); bw.flush(); } //释放资源 bw.close(); } }