阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第20章: JavaIO编程案例:课时94:数据排序处理

数据排序处理

从键盘输入以下的数据:“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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值