案例需求

  • 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)。要求按照成绩总分从高到低写入文本文件

  • 格式:姓名,语文成绩,数学成绩,英语成绩 举例:林青霞,98,99,100

分析步骤

  1. 定义学生类

  2. 创建TreeSet集合,通过比较器排序进行排序

  3. 键盘录入学生数据

  4. 创建学生对象,把键盘录入的数据对应赋值给学生对象的成员变量

  5. 把学生对象添加到TreeSet集合

  6. 创建字符缓冲输出流对象

  7. 遍历集合,得到每一个学生对象

  8. 把学生对象的数据拼接成指定格式的字符串

  9. 调用字符缓冲输出流对象的方法写数据

  10. 释放资源

代码实现

  • 学生类

public class Student {// 姓名private String name;// 语文成绩private int chinese;// 数学成绩private int math;// 英语成绩private int english;public Student() {super();}public Student(String name, int chinese, int math, int english) {super();this.name = name;this.chinese = chinese;this.math = math;this.english = english;}public String getName() {return name;}public void setName(String name) {this.name = name;}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;}
}

测试类

public class TreeSetToFileDemo {public static void main(String[] args) throws IOException {//创建TreeSet集合,通过比较器排序进行排序TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {@Overridepublic int compare(Student s1, Student s2) {//成绩总分从高到低int num = s2.getSum() - s1.getSum();//次要条件int num2 = num == 0 ? s1.getChinese() - s2.getChinese() : num;int num3 = num2 == 0 ? s1.getMath() - s2.getMath() : num2;int num4 = num3 == 0 ? s1.getName().compareTo(s2.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("myCharStream\\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();}
}

集合到文件数据排序改进版相关推荐

  1. 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称

    文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...

  2. IO流案例,集合到文件数据排序、复制单级和多级文件夹及复制文件的异常处理

    目录 一.集合到文件数据排序 二.复制单级文件夹 三.复制多级文件夹 四.复制文件的异常处理 基本做法: JDK7版本改进: JDK9版本改进: 一.集合到文件数据排序 需求: 键盘录入5个学生信息( ...

  3. linux高级文档,linux高级文件数据操作

    cat :显示切割数据 -f:选择显示切割列: -s:比现实没有分割的行 -d:自定义分隔符 cut -d '  '-f 1,3  a.txt : 以空格为分隔符显示第一列和第三列:这种情况不能分隔的 ...

  4. sont表示元素在存入集合时进行了排序,数据遍历的结果是按某个排序规则输出的

    单选 sont表示元素在存入集合时进行了排序,数据遍历的结果是按某个排序规则输出的;而order表示每次遍历的序列都是一样的,元素前后关系每次遍历都是确定的,那么下列哪些集合既是sort,又是orde ...

  5. python写csv文件按升序排列_用python给csv里的数据排序的具体代码

    1.使用argparse组件,获取命令行参数:使用re组件,获取需要查找的字符串所在行 2.使用pandas组件,对文件进行排序. 3.命令行执行数据获取及排序,写入文件: 以下是完整代码: #cod ...

  6. 对ArrayList集合里面数据排序

    先说下原因,最近项目中出现了获取网络数据混乱的情况,经过仔细查看才知道是加入集合的顺序出了问题,由于我是循环获取id,然后再循环请求数据,请求成功之后就把实体类中的数据加入到ArrayList集合中, ...

  7. 数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并

    数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并 第一章 冒泡排序 [1]Bubble_Sort.c 第二章 快速排序 [1]quick_sort.c 第三章 大数据 ...

  8. 集合中的数据存入到文件中,文件中的数据读取到集合中

    * Map<String ,Integer> map = new LinkedHashMap<>(); * map.put("摩卡",30); * map. ...

  9. python day2 python基础 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码...

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

最新文章

  1. NVIDIA Jetson Xavier NX使用SD镜像刷机流程
  2. Yum database disk image is malformed 错误
  3. 社区论坛行业搜索最佳实践
  4. python网络编程库_python网络编程学习笔记(9):数据库客户端
  5. zookeeper分布式锁的原理
  6. oracle.01081 cannot,ORA-01081: cannot start already-running ORACLE - shut it down first
  7. Verizon的SDN策略:不鸣则已,一鸣惊人?
  8. matlab 中的矩阵分解
  9. CVE-2012-0158 MSCOMCTL.ocx栈溢出漏洞分析
  10. Linux下使用Shell命令控制任务Jobs执行、Linux后台进程管理以及ctrl+z
  11. 95后公务员晒3004元工资引群嘲:安逸过了头,人生也就止步了
  12. 数据分析第四天--数据抽取、数据合并和数据计算
  13. RuntimeError: Exporting the operator var to ONNX opset version 11 is not supported. Please open a bu
  14. Illumina测序什么时候会测序到接头序列?
  15. python设置excel单元格宽度
  16. 计算机专业武汉的就业方向,计算机专业好就业吗
  17. spydroid_ipcamera源码分析-图解,android ip摄像头
  18. PyQt5+fitz实现图片与PDF互相转换
  19. Java小农养成记第四十天
  20. CSS样式实现选择按钮

热门文章

  1. .NET MVC 保存Session值,6位数验证码
  2. TreeList右键菜单功能
  3. Delphi XE6 TStringHelper中的string类型转换
  4. mina 粘包、多包和少包的解决方法
  5. 为netbean配置C++编译环境
  6. 【JFreeChart】JFreeChart—输出区域图
  7. asp.net 图片 上传 打水印 高质量缩略图
  8. ES6 import代码智能转换Babel插件: babel-plugin-imports-transform
  9. mac 抓包工具chares破解
  10. 调用第三方接口缴费的通用逻辑