2018-2019-20172329 《Java软件结构与数据结构》第四周学习总结
2018-2019-20172329 《Java软件结构与数据结构》第四周学习总结
经过这样一个国庆节的假期,心中只有一个想法,这个国庆假期放的,不如不放呢!!
教材学习内容总结
《Java软件结构与数据结构》第六章-列表
一、列表集合概念
- 1.链表是一种实现策略,使用引用开在对象之间创建链接,而列表集合是一种概念性表示法,其思想是使事物以线性列表的方式进行组织。
- 注:列表也可以是用链表或数组来实现。列表集合没有内在的容量大小,它可以随着需要而增大。
- 2.列表集合有三种类型:
(1)有序列表(order list),其元素按照元素的某种内在特性进行排序。
(2)无序列表(unordered list),其元素间不具有内在顺序,元素按照它们在列表中的位置进行排序。
(3)索引列表(indexed list),其元素可以用数字索引来引用。 - 3.Java 集合的API中的列表
| 操作 | 描述 |
|---|---|
| add(E element) | 向列表末端添加一个元素 |
| add(int index,E element) | 在指定索引处插入一个元素 |
| get(int index) | 返回指定索引处的元素 |
| remove(int index) | 删除指定索引处的元素 |
| remove(E Object) | 删除指定对象的第一个出现 |
| set(int index,E element) | 替代指定索引处的元素 |
| rsize() | 返回列表中的元素数量 |
二、有序列表
- 1.有序列表是基于列表中元素的某些特性的。比如,我们按人的名字字母进行排序,或者应货物编号来维护存货列表。
- 注:有序列表中的元素具有内在关联,这种关联定义了元素之间的顺序。

三、无序列表
- 1.无序列表中个元素的位置并不基于元素的任何内在特性。
- 注:无序列表中的元素按使用者所选择的任意方式排序。

四、索引列表
- 1.索引列表的各元素间也不存在能够决定它们在列表中的顺序的内在关系。列表的使用者决定了元素的顺序。
- 注:索引列表为它的元素维护一段连续的数字索引值。
- 注:索引列表和数组的根本区别在于:索引列表的索引值总是连续的。如果删除一个元素,其他元素的位置会像“坍塌”了一样以消除产生的间隙,当插入一个元素时,其他元素的索引将进行位移以腾出位置。

教材学习中的问题和解决过程
问题1:在理解索引列表与数组的根本区别的时候,可能是因为课本是机器翻译的,存在一些问题,比如,对于我而言,就理解不了什么叫做坍塌了一样,腾出位置.....
问题1解决方案:
(1)举个例子:数组假如要赋值的话,就需要说a[1]=某个值,而数组里该位置的值就会被替代了,但是对于列表而言的话,插入元素不会覆盖原有的值。问题2:在书中107页无序列表的adt中的中间插入的方法介绍是这样写的:
把元素添加到列表中某个已有元素的后面。
但是,这就有个问题了,在之前就有过这个问题,假如在一个列表里面同时出现两个或者两个以上相同的元素怎么办?该如何进行判断?
问题2解决方法:
(1)第一个想法就是用键入想插入元素的位置,而不是某一个元素的后面,这样可以保证插入的准确性;
(2)第二个方法就是先在某个元素后面插入,假如出现这个对照的元素有两个的情况,再就细节进行判断,需要插入到哪一个的后面。问题3:modCount是什么东西?
问题3解决方法:因为在第六章的课本代码里有提及这一方面的东西,而且也有提醒说在第七章有所细节的学习,所以我就看了看第七章,迭代器,虽然modCount变量在此次试验中没有涉及太过重要的角色,但是看到陌生的东西总有好奇。
- (1)modCount:是一个整数变量,一旦集合被修改(添加或删除),它就会增加。
因为在第六章还见到一个之前没有了解过的东西,就是串行化。
- (2)串行化:在java中串行化对象必须:
- 1、该对象的类必须实现Serializable接口。
- 2、该对象的串行化成员必须是非静态成员变量,即不能保存任何的成员方法和静态的成员变量,而且串行化保存的只是变量的值,对于变量的任何修饰符,都不能保存。而对于某些类型的对象,其状态是瞬时的,这样的对象是无法保存其状态的,例如一个Thread对象,或一个FileInputStream对象,对于这些字段,我们必须用transient关键字标明 。 (注:保存任何的成员方法和静态的成员变量没有任何的意义,因为对象的类已经完整的保存了他们)
- 3、要串行化一个对象,必须与一定的对象输入/输出流联系起来,通过对象输出流将对象状态保存下来,再通过对象输入流将对象状态恢复。
- (2)串行化:在java中串行化对象必须:
代码调试中的问题和解决过程
问题1:在书里有
rear变量,作用是什么?

问题1解决:
(1)第一次出现这个变量的时候应该是在我们学习环形队列的时候,在那个时候,rear代表着数组里的最后一个元素的后一个,所以在不是环形数组里的时候,就可以将其理解为列表中元素的个数。问题2:很久没有学习Comparable接口,忘记了
问题2解决方法:
(1)只能自己学习啦。
(2)Comparable接口1.什么是Comparable接口
此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort )进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。
- 2.实现什么方法
int compareTo(T o)
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
参数: o - 要比较的对象。
返回:负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。
抛出:ClassCastException - 如果指定对象的类型不允许它与此对象进行比较。
上周考试错题总结
1:A polymorphic reference uses _______________, not the type of the reference, to determine which version of a method to invoke.
A .the type of the object
B .the type of the reference
C .both A and B
D .none of the above正确答案: A 我的答案: C
解析:多态引用不能使用参考的类型来确定要调用的方法的版本。
2、In an array implementation of a Stack, the array is ___________ causing the implementation to have to create a new larger array and copy the contents of the stack into the new array in order to expand the capacity of the stack.
A .Dynamic
B .Static
C .Flexible
D .Polymorphic正确答案: B 我的答案: D
解析:对数组的理解不透彻。
3、By using the interface name as a return type, the interface doesn’t commit the method to the use of any particular class that implements a stack.
A .true
B .false正确答案: A 我的答案: B
解析:书中有相似的话,理解有误。
4、The implementation of the collection operations should affect the way users interact with the collection.
A .true
B .false正确答案: B 我的答案: A
解析:在翻译后没有特别看懂题目。
5、A data structure that uses object reference variables to create links between objects is
A .Linked Structure
B .Pointer
C .Self-referential
D .Array正确答案: A 我的答案: B
解析:没有看清题目,没有看清数据结构几个字,选成了指针。
6、A linked implementation of a stack adds and removes elements from the _______ of the linked list.
A .Front
B .Rear
C .Middle
D .None of the above正确答案: A 我的答案: D
解析:应该是头删,尾进,题目模糊。
7、The first operation removes an element at the front of the queue and returns a reference to it.
A .True
B .False正确答案: B 我的答案: A
解析:因为删除操作会移动指针,但是不会返回。
代码链接

结对及互评
- 本周结对学习情况
- 博客中值得学习的或问题:
- 内容详略得当;
- 代码调试环节比较详细;
- 基于评分标准,我给本博客打分:5分。得分情况如下:
正确使用Markdown语法(加1分):
模板中的要素齐全(加1分)
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
- 博客中值得学习的或问题:
- 内容详略得当;
- 代码调试环节比较详细;
- 基于评分标准,我给本博客打分:9分。得分情况如下:
- 正确使用Markdown语法(加1分):
- 模板中的要素齐全(加1分)
- 教材学习中的问题和解决过程, 一个问题加1分
- 代码调试中的问题和解决过程, 一个问题加1分
感悟
同博客开头。。。。。。这个国庆假期真的是太爽了!!!
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 |
| 第一周 | 0/0 | 1/1 | 6/6 |
| 第二周 | 1313/1313 | 1/2 | 20/26 |
| 第三周 | 901/2214 | 1/3 | 20/46 |
| 第四周 | 3635/5849 | 2/4 | 20/66 |
参考资料
蓝墨云班课
Java程序设计与数据结构
串行化
Java中实现对象的比较:Comparable接口和Comparator接口
Comparable接口的实现和使用
2018-2019-20172329 《Java软件结构与数据结构》第四周学习总结的更多相关文章
- 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结
20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...
- 20172329 2018-2019 《Java软件结构与数据结构》实验三报告
20172329 2018-2019-2 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...
- 20172329 2018-2019-2 《Java软件结构与数据结构》实验二报告
20172329 2018-2019-2 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...
- 20172329 2018-2019《Java软件结构与数据结构》第一周学习总结
2018-2019-20172329 <Java软件结构与数据结构>第一周学习总结 在这学期就已经大二了,也已经步入了学习专业课的核心时间,在这个阶段,我们应该了解自己的学习情况,针对自己 ...
- 20172302 《Java软件结构与数据结构》实验三:查找与排序实验报告
课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月19日 必修/选修: 必修 实验内容 (1) ...
- 20172302 《Java软件结构与数据结构》实验二:树实验报告
课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参 ...
- 20172302 《Java软件结构与数据结构》实验一:线性结构实验报告
课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年9月26日 必修/选修: 必修 实验内容 (1)链 ...
- 20172301 《Java软件结构与数据结构》实验三报告
20172301 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...
- 20172301 《Java软件结构与数据结构》实验二报告
20172301 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...
- 20172301 《Java软件结构与数据结构》实验一报告
20172301 <Java软件结构与数据结构>实验一报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...
随机推荐
- js身份证校验
通过js实现对15位或者18位身份证格式校验: 通过调用idCardNoUtil.checkeIdCardNo(idCardNo)传入身份证号码,实现校验. var idCardNoUtil = { ...
- Mybatis 配置文件
1.核心配置文件 sqlMapConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOC ...
- Redis(二):Redis入门介绍
Redis入门介绍目录导航: 入门概述 VMWare + VMTools千里之行始于足下 Redis的安装 Redis启动后杂项基础知识讲解 入门概述 是什么 Redis:REmote DIction ...
- Java编码算法和摘要算法
编码算法 编码算法是将一种形式转换成等价的另外一种形式.主要是为了方便某种特定场景的处理. 字母如何在计算机中表示呢? 用ASCII编码 那中文字符如何在计算机中表示呢? 用Unicode编码 如何同 ...
- 20155211 2016-2017-2《Java程序设计》课程总结
20155211 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 预备作业1:对师生关系的理解 预备作业2:熟能生巧及学习c语言的心的 预备作业3:关于假期 ...
- 20155213 2016-2017-2 《Java程序设计》第二周学习总结
20155213 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 关于Unicode和UTF 很抱歉,没能读完娄老师推荐的网址,关于Unicode和UTF的介 ...
- SQL SERVER 无法正常连接的那些事
1.确保sqlserver服务正常运行. >一般可以从两个地方控制服务,一是系统自带的服务管理器,最快捷的方式是运行“services.msc”,二是使用sqlserver自带的“SQL Ser ...
- 客户端与服务器端同步Evernote
原文地址:http://www.zhihu.com/question/20238731 Evernote的同步方式是 以本地为基准同步到网络 还是 以网络为基准同步到本地 的? 若客户端从未与服务器端 ...
- 【LG4631】[APIO2018]Circle selection 选圆圈
[LG4631][APIO2018]Circle selection 选圆圈 题面 洛谷 题解 用\(kdt\)乱搞剪枝. 维护每个圆在\(x.y\)轴的坐标范围 相当于维护一个矩形的坐标范围为\([ ...
- Kettle定时执行
1,Kettle跨平台使用. 例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下: 1)进入到Kettle部署的路径 ...