• ArrayList——学生信息管理系统
    • HashMap——课程管理系统
    • 并发修改异常+异常的查找及处理
    • 斗地主设计
    • 类输出到文件中
    • 复制单级文件夹
    • 游戏次数
    • 生产者和消费者案例分析

    1,ArrayList——学生信息管理系统

    首先,作为学生信息管理系统,最重要的是
    1,能够有一个存储学生信息的容器——ArrayList动态数组
    2,能够对数组进行增删查改

    所以我们可以把学生信息管理系统看成是一个类,类的属性是,一个ArrayList的动态数组,类的方法是增删查改。

    我们在阅读代码的时候,最重要的是,先看类的属性是什么,也就是一切方法都是围绕什么进行运算的。
    然后可以通过main函数来查阅方法,比较快速和简洁。

    image.png

    image.png
    image.png

    image.png
    image.png

    image.png

    image.png
    image.png


    Map管理系统中的put方法分析

    image.png
    image.png

    在本案例中,Map集合是我们主要操作的数据结构
    Public Map courses;
    对Map进行泛型定义后,就可以对courses进行初始化了,courses就是本类最重要的数据结构,也是编写方法的核心。方法需要修改的就是courses相关的数据。

    但是,为了保护courses数据不轻易的被破坏(修改),我们需要尽可能地减少对courses的操作,尽可能做到只读不写,以此来保持程序的健壮性。

    所以在修改courses之前,我们需要进行if语句对输入的信息进行判断,判断是否满足输入要求,若不满足则不能对courses进行修改。

    方法中的Scanner方法贯穿始终,所以我们要在一开始就对Scanner类进行声明并且在堆中开辟一个内存空间。

    在方法中,要尽可能的使用局部变量,做到对数据的修改越少越好。

    在本例中,最后courses输入的参数应该要有,ID和name,所以我们在方法的一开始就要对ID和name的局部变量布局。


    1. **斗地主设计**

    image.png
    image.png

    增加对牌排序的功能

    image.png

    image.png


    把类输出到文件中

    输出到文件中使用的方法肯定是write,因为最后是输出字符串,所以我们用BufferedWriter类

    image.png

    我们可以用StringBuilder来拼接字符串,因为StringBuilder的运行速度最快,占用内存最少。


    复制单级文件夹

    关键点不是java语句是如何写的,我认为关键点在于,在计算机系统中,文件和文件是如何进行通讯的。
    首先,我们需要先建立起两个指针一样的东西,也就是两个文件的传输通路。
    之后再进行文件传输,这才是最关键的。

    image.png

    image.png

    image.png

    image.png

    一种类,如果有多种构造方法,核心目的就是为了方便复用。


    游戏次数

    image.png

    这里的关键在于,我们需要让程序与系统内的文件进行交互。而不是程序只与自己的内存进行交互。
    所以我们不应该写while循环,因为我们每一次执行,都是玩家自己进行的操作。

    先写一个猜数字的游戏类
    image.png

    再写一个测试类,作为main函数的入口。image.png

    这里我们把内存存在系统内的文件中。


    生产者和消费者

    与多线程有关的案例分析。

    我们先写一个系统,该系统具有数据和操作数据的方法。
    现在我们还需要其他的类,来调用该对象的一些方法。并且把这些方法以多线程的形式输出。

    image.png

    image.png

    其中state是状态变量,我们通过建立一个state来标记状态指示符。根据不同的状态来判断代码块是否执行。

    当我们使用wait()方法的时候,该代码块是需要被synchronized修饰的,只有同步的代码块才可以使用wait方法。

    同时当我们等待了之后,我们也一定要记得唤醒程序的代码。

    image.png
    image.png

    image.png