上一篇:IO实战篇:字符串逆序显示 | 带你学《Java语言高级特性》之七十四
本节将带着读者开发实际案例,以简单基类为单位,结合Comparable接口、工厂设计模式实现对数据的排序功能。
【本节目标】
通过阅读本节内容,你将复习基类创建、Comparable接口的实现、Arrays类的使用等知识,结合新学的输入输出相关方法,编写相关接口与工厂类,初步完成对象类型数据的排序处理功能。
数据排序处理
从键盘输入以下的数据:“TOM:89 | JERRY:90 | TONY:95”,数据格式为“姓名:成绩 | 姓名:成绩 | 姓名:成绩”,对输入的内容按成绩进行排序,并将排序结果按照成绩由高到低排序。
对于排序的处理肯定使用Comparable接口完成,同时利用Arrays类来处理,这里面唯一不同的地方就在于此时的数据显示需要通过键盘输入。
1、 建立Student的程序类,并且进行排序规则的配置
public class Student implements Comparable<Student>{
private String name;
private double age;
public Student(String name,double score) {
this.name = name ;
this.score = score ;
}
public String toString() {
return "姓名:" + this.name + "、成绩:" + this.score;
}
@Override
public int comparaTo(Student obj) {
if(this.score > obj.score) {
return -1;
}else if(this.score < obj.score) {
return 1;
}else{
return 0;
}
}
}
2、 建立数据的输入处理操作,因为牵扯到拆分问题;
public interface IStudentService {
public Student[] getData(); //获取排序数据
}
3、 建立IStudentService子类
public class StudentServiceImpl implements IStudentService {
private String content ;
private Student [] students;
public StudentServiceImpl(String content) {
this.content = content;
this.handle(); //进行数据处理
}
private void handle(){ //进行字符串数据的处理操作
String result[] = this.content.split("\\|") ; //拆分数据
this.student = new Student[result.length];
for (int x = 0 ;x < result.length ; x ++) {
String temp [] = result[x].split(":");
this.students[x] = new Student(temp[0],Double.parseDouble(temp[1])) ;
}
}
@Override
public Student[] getData() {
Arrays.sort(this.students);
return this.students;
}
}
4、 定义Factory工厂类
public class Factory{
private Factory(){}
public static IStudentService getInstance(){
return new StudentServiceImpl(InputUtil.getString("请输入数据信息:"));
}
}
5、 编写测试类
public class IOCaseDemo {
public static void main(String[] args) {
System.out.println(Arrays.toString(Factory.getInstance().getData()));
}
}
执行结果:
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学