数据排序处理
从键盘输入以下的数据:“TOM:89|JERRY:90|TONY:95”,数据格式为“姓名:成绩 | 姓名:成绩 | 姓名:成绩”,对输入的内容按成绩进行排序,并将排序结果按照成绩由高到低排序。
对于排序的处理肯定使用Comparable接口完成,同时利用Arrays类来处理,这里面唯一不同的地方就在于此时的数据显示需要通过键盘输入。
1、建立Student的程序类,并且进行排序规则的配置。
package cn.mldn.demo.vo;
public class Student implements Comparable<Student> {
private String name;
private double score;
public Student(String name,double score) {
this.name = name;
this.score = score;
}
public String toString() {
return "姓名:" + this.name + "、成绩:" + this.score ;
}
@Override
public int compareTo(Student obj) {
if (this.score > obj.score) {
return -1 ;
} else if (this.score < obj.score) {
return 1 ;
} else {
return 0 ;
}
}
}
2、建立数据的输入处理操作,因为牵扯到拆分问题;
package cn.mldn.demo.service;
import cn.mldn.demo.vo.Student;
public interface IStudentService {
public Student[] getDate(); // 获取排序数据
}
3、建立IStudentService子类
package cn.mldn.demo.service.impl;
import java.util.Arrays;
import cn.mldn.demo.service.IStudentService;
import cn.mldn.demo.vo.Student;
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.students = 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[] getDate() {
Arrays.sort(this.students);
return this.students;
}
}
4、定义Factory工厂类
package cn.mldn.demo.Factory;
import cn.mldn.demo.service.IStudentService;
import cn.mldn.demo.service.impl.StudentServiceImpl;
import cn.mldn.demo.util.InputUtil;
public class Factory {
private Factory() {}
public static IStudentService getInstance() {
return new StudentServiceImpl(InputUtil.getString("请输入数据信息:"));
}
}
5、编写测试类
package cn.mldn.demo;
import java.util.Arrays;
import cn.mldn.demo.Factory.Factory;
public class IOCaseDemo {
public static void main(String[] args) {
System.out.println(Arrays.toString(Factory.getInstance().getDate()));
}
}
请输入数据信息:
TOM:89|JERRY:90|TONY:95
[姓名:TONY、成绩:95.0, 姓名:JERRY、成绩:90.0, 姓名:TOM、成绩:89.0]