IO实战篇:数据排序处理 | 带你学《Java语言高级特性》之七十五

简介: 本节将带着读者开发实际案例,以简单基类为单位,结合Comparable接口、工厂设计模式实现对数据的排序功能。

上一篇: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()));
    }
}  

执行结果:

image.png

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:IO实战篇:数据排序处理深入 | 带你学《Java语言高级特性》之七十六
更多Java面向对象编程文章查看此处

相关文章
|
9月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
401 4
|
10月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
10月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
11月前
|
监控 Java API
现代 Java IO 高性能实践从原理到落地的高效实现路径与实战指南
本文深入解析现代Java高性能IO实践,涵盖异步非阻塞IO、操作系统优化、大文件处理、响应式网络编程与数据库访问,结合Netty、Reactor等技术落地高并发应用,助力构建高效可扩展的IO系统。
317 0
|
8月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
315 1
|
9月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
570 16
|
10月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
11月前
|
存储 Java Linux
操作系统层面视角下 Java IO 的演进路径及核心技术变革解析
本文从操作系统层面深入解析Java IO的演进历程,涵盖BIO、NIO、多路复用器及Netty等核心技术。分析各阶段IO模型的原理、优缺点及系统调用机制,探讨Java如何通过底层优化提升并发性能与数据处理效率,全面呈现IO技术的变革路径与发展趋势。
229 3
|
10月前
|
SQL Java 数据库连接
Java IO流(一):字节流与字符流基础
本文全面解析Java IO流,涵盖字节流、字符流及其使用场景,帮助开发者理解IO流分类与用途,掌握文件读写、编码转换、异常处理等核心技术,通过实战案例提升IO编程能力。
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。

热门文章

最新文章