集合到文件数据排序改进版
案例需求
键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)。要求按照成绩总分从高到低写入文本文件
格式:姓名,语文成绩,数学成绩,英语成绩 举例:林青霞,98,99,100
分析步骤
定义学生类
创建TreeSet集合,通过比较器排序进行排序
键盘录入学生数据
创建学生对象,把键盘录入的数据对应赋值给学生对象的成员变量
把学生对象添加到TreeSet集合
创建字符缓冲输出流对象
遍历集合,得到每一个学生对象
把学生对象的数据拼接成指定格式的字符串
调用字符缓冲输出流对象的方法写数据
释放资源
代码实现
学生类
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();}
}
集合到文件数据排序改进版相关推荐
- 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称
文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...
- IO流案例,集合到文件数据排序、复制单级和多级文件夹及复制文件的异常处理
目录 一.集合到文件数据排序 二.复制单级文件夹 三.复制多级文件夹 四.复制文件的异常处理 基本做法: JDK7版本改进: JDK9版本改进: 一.集合到文件数据排序 需求: 键盘录入5个学生信息( ...
- linux高级文档,linux高级文件数据操作
cat :显示切割数据 -f:选择显示切割列: -s:比现实没有分割的行 -d:自定义分隔符 cut -d ' '-f 1,3 a.txt : 以空格为分隔符显示第一列和第三列:这种情况不能分隔的 ...
- sont表示元素在存入集合时进行了排序,数据遍历的结果是按某个排序规则输出的
单选 sont表示元素在存入集合时进行了排序,数据遍历的结果是按某个排序规则输出的;而order表示每次遍历的序列都是一样的,元素前后关系每次遍历都是确定的,那么下列哪些集合既是sort,又是orde ...
- python写csv文件按升序排列_用python给csv里的数据排序的具体代码
1.使用argparse组件,获取命令行参数:使用re组件,获取需要查找的字符串所在行 2.使用pandas组件,对文件进行排序. 3.命令行执行数据获取及排序,写入文件: 以下是完整代码: #cod ...
- 对ArrayList集合里面数据排序
先说下原因,最近项目中出现了获取网络数据混乱的情况,经过仔细查看才知道是加入集合的顺序出了问题,由于我是循环获取id,然后再循环请求数据,请求成功之后就把实体类中的数据加入到ArrayList集合中, ...
- 数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并
数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并 第一章 冒泡排序 [1]Bubble_Sort.c 第二章 快速排序 [1]quick_sort.c 第三章 大数据 ...
- 集合中的数据存入到文件中,文件中的数据读取到集合中
* Map<String ,Integer> map = new LinkedHashMap<>(); * map.put("摩卡",30); * map. ...
- python day2 python基础 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码...
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
最新文章
- NVIDIA Jetson Xavier NX使用SD镜像刷机流程
- Yum database disk image is malformed 错误
- 社区论坛行业搜索最佳实践
- python网络编程库_python网络编程学习笔记(9):数据库客户端
- zookeeper分布式锁的原理
- oracle.01081 cannot,ORA-01081: cannot start already-running ORACLE - shut it down first
- Verizon的SDN策略:不鸣则已,一鸣惊人?
- matlab 中的矩阵分解
- CVE-2012-0158 MSCOMCTL.ocx栈溢出漏洞分析
- Linux下使用Shell命令控制任务Jobs执行、Linux后台进程管理以及ctrl+z
- 95后公务员晒3004元工资引群嘲:安逸过了头,人生也就止步了
- 数据分析第四天--数据抽取、数据合并和数据计算
- RuntimeError: Exporting the operator var to ONNX opset version 11 is not supported. Please open a bu
- Illumina测序什么时候会测序到接头序列?
- python设置excel单元格宽度
- 计算机专业武汉的就业方向,计算机专业好就业吗
- spydroid_ipcamera源码分析-图解,android ip摄像头
- PyQt5+fitz实现图片与PDF互相转换
- Java小农养成记第四十天
- CSS样式实现选择按钮