_集合到文件数据排序改进版
-
需求:键盘录入5个学生的信息(姓名,语文成绩,数学成绩,英语成要求按成绩总分从高到低写入文本文件,格式: 姓名,语文成绩,数学成绩,英语成绩
-
思路:
- 定义学生类
- 创建TreeSet集合,通过比较器排序进行排序
- 键盘录入学生数据
- 创建学生对象,把键盘录入的数据对应赋值给学生对象的成员变量
- 把学生对象添加到TreeSet集合
- 创建字符缓冲输出流对象
- 遍历集合,得到每一个学生对象
- 把学生对象的数据拼接成指定格式的字符串
- 调用字符缓冲输出流对象的方法写数据
- 释放资源
-
package demo16; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Comparator; import java.util.Scanner; import java.util.TreeSet; public class _IO_Demo_01 { static TreeSet<Student> tr = null; public static void main(String[] args) { /* 需求:键盘录入5个学生的信息(姓名,语文成绩,数学成绩,英语成要求按成绩总分从高到低写入文本文件, 格式: 姓名,语文成绩,数学成绩,英语成绩 思路(参考): - 定义学生类 - 创建TreeSet集合,通过比较器排序进行排序 - 键盘录入学生数据 - 创建学生对象,把键盘录入的数据对应赋值给学生对象的成员变量 - 把学生对象添加到TreeSet集合 - 创建字符缓冲输出流对象 - 遍历集合,得到每一个学生对象 - 把学生对象的数据拼接成指定格式的字符串 - 调用字符缓冲输出流对象的方法写数据 - 释放资源 */ // 创建TreeSst集合 TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() { @Override public int compare(Student s2, Student s1) { int num1; int num2; int num3; int num4; num1 = s1.sum() - s2.sum(); if (num1 == 0) { num2 = s1.getChinese() - s2.getChinese(); if (num2 == 0) { num3 = s1.getMath()-s2.getMath(); if (num3 == 0) { num4 = s1.getName().compareTo(s2.getName()); return num4; }else{ return num3; } } else { return num2; } }else{ return num1; } } }); // 创建Scanner对象,读取键盘录入的信息 Scanner scanner = null; for