- ArrayList——学生信息管理系统
- HashMap——课程管理系统
- 并发修改异常+异常的查找及处理
- 斗地主设计
- 类输出到文件中
- 复制单级文件夹
- 游戏次数
- 生产者和消费者案例分析
1,ArrayList——学生信息管理系统
首先,作为学生信息管理系统,最重要的是
1,能够有一个存储学生信息的容器——ArrayList动态数组
2,能够对数组进行增删查改
所以我们可以把学生信息管理系统看成是一个类,类的属性是,一个ArrayList的动态数组,类的方法是增删查改。
我们在阅读代码的时候,最重要的是,先看类的属性是什么,也就是一切方法都是围绕什么进行运算的。
然后可以通过main函数来查阅方法,比较快速和简洁。
Map管理系统中的put方法分析
在本案例中,Map集合是我们主要操作的数据结构
Public Map
对Map进行泛型定义后,就可以对courses进行初始化了,courses就是本类最重要的数据结构,也是编写方法的核心。方法需要修改的就是courses相关的数据。
但是,为了保护courses数据不轻易的被破坏(修改),我们需要尽可能地减少对courses的操作,尽可能做到只读不写,以此来保持程序的健壮性。
所以在修改courses之前,我们需要进行if语句对输入的信息进行判断,判断是否满足输入要求,若不满足则不能对courses进行修改。
方法中的Scanner方法贯穿始终,所以我们要在一开始就对Scanner类进行声明并且在堆中开辟一个内存空间。
在方法中,要尽可能的使用局部变量,做到对数据的修改越少越好。
在本例中,最后courses输入的参数应该要有,ID和name,所以我们在方法的一开始就要对ID和name的局部变量布局。
**斗地主设计**
增加对牌排序的功能
把类输出到文件中
输出到文件中使用的方法肯定是write,因为最后是输出字符串,所以我们用BufferedWriter类
我们可以用StringBuilder来拼接字符串,因为StringBuilder的运行速度最快,占用内存最少。
复制单级文件夹
关键点不是java语句是如何写的,我认为关键点在于,在计算机系统中,文件和文件是如何进行通讯的。
首先,我们需要先建立起两个指针一样的东西,也就是两个文件的传输通路。
之后再进行文件传输,这才是最关键的。
一种类,如果有多种构造方法,核心目的就是为了方便复用。
游戏次数
这里的关键在于,我们需要让程序与系统内的文件进行交互。而不是程序只与自己的内存进行交互。
所以我们不应该写while循环,因为我们每一次执行,都是玩家自己进行的操作。
先写一个猜数字的游戏类
再写一个测试类,作为main函数的入口。
这里我们把内存存在系统内的文件中。
生产者和消费者
与多线程有关的案例分析。
我们先写一个系统,该系统具有数据和操作数据的方法。
现在我们还需要其他的类,来调用该对象的一些方法。并且把这些方法以多线程的形式输出。
其中state是状态变量,我们通过建立一个state来标记状态指示符。根据不同的状态来判断代码块是否执行。
当我们使用wait()方法的时候,该代码块是需要被synchronized修饰的,只有同步的代码块才可以使用wait方法。
同时当我们等待了之后,我们也一定要记得唤醒程序的代码。