【Java】文件中学生成绩排序
来源:互联网 发布:java招聘广州 编辑:程序博客网 时间:2024/04/24 02:59
一、需求
a) 文件students.txt中包含学号、姓名、年龄和成绩
b) 读取students文件,并按照成绩降序排序
c) 若成绩相同,按年龄升序排序
二、代码
a) FileParser.java
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public classFileParser {
public List<Student>parse(){
//读文件
//将文件的每一条数据转换成学生对象
List<Student>students =newArrayList<Student>();
BufferedReaderbr = null;
try {
br = new BufferedReader(new FileReader("d:/students.txt"));
String line;
while(null != (line =br.readLine())){
String[]infos =line.split(",");//1,zhangsanfeng,23,78
//将该学习信息封装成一个学生对象
Students = new Student();
s.setId(Integer.parseInt(infos[0]));
s.setName(infos[1]);
s.setAge(Integer.parseInt(infos[2]));
s.setScore(Integer.parseInt(infos[3]));
//将学生对象存放到集合中
students.add(s);
}
}catch(FileNotFoundExceptione) {
e.printStackTrace();
}catch(IOExceptione) {
e.printStackTrace();
}finally{
if(null !=br){
try {
br.close();
}catch(IOExceptione) {
e.printStackTrace();
}
}
}
returnstudents;
}
}
b) Student.java
//实体类
public classStudent {
private int id;
private Stringname;
private int age;
private int score;
public int getId() {
returnid;
}
public void setId(intid) {
this.id =id;
}
public String getName() {
returnname;
}
public void setName(String name) {
this.name =name;
}
public int getAge() {
returnage;
}
public void setAge(intage) {
this.age =age;
}
public int getScore() {
returnscore;
}
public void setScore(intscore) {
this.score =score;
}
}
c) StudentComparator.java
1import java.util.Comparator;
public classStudentComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Students2) {
returns2.getScore() - s1.getScore() == 0
?s1.getAge() -s2.getAge()
:s2.getScore() -s1.getScore();
}
}
d) Test.java
import java.util.Collections;
import java.util.List;
public classTest {
public static void main(String[] args) {
FileParserfp = new FileParser();
List<Student>students =fp.parse();
if(null !=students && !students.isEmpty()){
for(Students : students){
System.out.println(s.getId()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"\t\t"+s.getScore());
}
}
//对集合中所有的学生按照考试分数进行降序排序 并输出
Collections.sort(students,new StudentComparator());
System.out.println("==========排序后================");
if(null !=students && !students.isEmpty()){
for(Students : students){
System.out.println(s.getId()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"\t\t"+s.getScore());
}
}
}
}
三、执行结果
1 liming 22 77
2 liqian 23 80
3 yanyan 22 70
4 chenxia 21 90
5 tanwei 22 80
==========排序后================
4 chenxia 21 90
5 tanwei 22 80
2 liqian 23 80
1 liming 22 77
3 yanyan 22 70
- 【Java】文件中学生成绩排序
- 成绩文件排序
- Java 成绩排序
- Java练习题22 成绩排序
- 22.改变文件中学生数据
- 中学生成绩管理及分析报表导出系统
- 华为oj 成绩排序java编码
- Java作业-输入学生成绩并排序
- java集合框架之学生成绩排序
- 成绩排序
- 成绩排序
- 成绩排序
- 成绩排序
- 成绩排序
- 成绩排序
- 成绩排序
- 成绩排序
- 成绩排序
- 【JZOJ5307】【NOIP2017提高A组模拟8.18】偷窃
- A
- ==和equals的区别
- js执行会阻塞DOM树的解析和渲染,那么css加载会阻塞DOM树的解析和渲染吗
- 树的遍历(先中后序,非递归,层次遍历)
- 【Java】文件中学生成绩排序
- Java中for each型循环
- 网路学习第三天
- 《Java从入门到放弃》入门篇:hibernate查询——HQL
- JAVA学习55_Java正则表达式的语法与示例
- ubuntu 删除OpenCV
- Sitemesh 在项目中的应用。
- 【Java】文件中指定单词的替换
- Spring