1.回顾作业
对学生按照总分升序或者降序来排列。
提供给用户进行选择排序。例如菜单1,表示升序,菜单2,表示降序。
【案例】
问题:
实例化每个学生信息后,再来设置choose的值,反而不能够影响排序的顺序。因为顺序已经形成。
说明这个顺序是在每天向集合中插入新的数据时,形成的,形成过程调用了Comparable的方法compareTo()

当我们看到以上日志时,是否表示这个接口方法被调用了?

当看到虚线时,是否表示虚线日志代码执行了?

结论:是否表示每add一次,接口comparable执行一次。
逻辑上演变:一定要在顺序确定之前,确定choose的值。顺序确定之前,是否就是add一个元素到集合中之前。choose的值应该放在最前面设置。
项目结构:

Student.java





MyTest.java


步骤:(1)学生类实现Comparable接口
(2)有了接口实现后,可以让TreeSet集合显示按顺序显示
疑问:
当前是确定顺序,再输入学生信息。
能不能先输入再确定顺序?
提示:
(1)把第一个队中TreeSet的元素,无序的Set;
(2)获取用户输入的顺序;
(3)按照用户要的顺序,重新放到第二个队中去。
2.Stream(流)
数据流,可以理解为计算机操作数据时,是一串数据,把这种形式称之为流。
复制文件有一个进度条,那么就像水流从A处流向B处。总是一点一点在流动。A到B有一个管道,对于Stream也是有管道这个概念。
使用Stream对文件进行操作,java提供了stream类来模拟文件操作。这样更便捷。
有:
(1)输入流--read
(2)输出流--write
3.Stream的分类
按照处理数据单位不同:
(1)字节流,各类信息
(2)字符流,文本信息
按照数据流流向分:
(1)输入流
(2)输出流
按照功能不同分:
(1)节点流:原始的方式
(2)处理流:封装的方式
4.Stream类的结构层次
(1)Stream类都在java.io包中。

(2)层次


字节流有:InputStream和OutputStream
字符流有:Reader和Writer;
5.FileInputStream和FileOutputStream
FileInputStream:读取;
构造方法:
new FileInputStream(File),传入文件,读取的文件
new FileInputStream(FileDescriptor),传入文件描述器
new FileInputStream(String),传入文件路径
api:
read(),从文件中读取
read(byte[]),按字节数组读取
read(byte[],int i,int l),按字节数组读取,从指定位置读取若干个数据。
【案例】



文件内容:

控制台日志:

FileOutputStream:写入;
构造方法:
new FileOutputStream(File),传入一个文件,写入的文件
new FileOutputStream(FileDescriptor),传入一个文件描述器
new FileOutputStream(String),传入一个文件路径
write(int),像目标文件写入一个字节。
作业:
实现一个在线答题功能,题没在a.txt文件,答案在b.txt文件,从a文件读取处题目显示到控制台日志中,用户录入自己的答案,与b.txt中答案对比,如果正确,就输出"你答对了",如果错误,输出"你答错了"。使用循环,错了,可以再重新答题。
网友评论