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 实验教师:王志强老师 ...
随机推荐
- ps基本认识
近来中意ui方面学习,从视频中总结了些许notses,希望能够帮到共同喜欢(❤ ω ❤)的友友 ·基础了解 位图:由像素组成的图片,把位图无限放大以后看到很多小方格,一个方格代表一个像素 矢量图:放大 ...
- Redis的特性以及优势(附官网)
NoSQL:一类新出现的数据库(not only sql) 泛指非关系型的数据库 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 NoSQL的世 ...
- centos6.9下安装python3.7
说明 以下所有操作都基于centos6.9 python3.7依赖openssl1.0.2,首先更新系统自带的openssl 建议 升级系统到centos7(系统openssl已升级到1.0.2) 升 ...
- Python学习 :面向对象 -- 三大特性
面向对象的三大特性 一.封装 把数据.值.变量放入到对象中 构造方法 _init_方法 特殊作用: 在 obj = 类名() 执行时: 内部自动执行两个步骤: 1.创建对象 2.通过对象执行类中的一个 ...
- git——本地项目上传到git
1.对于github相信大家写自动化代码的人都不陌生,而且这也可以说是你进军自动化的一项必须解锁的技能,今天抽空开始整理笔记,顺便整理下github的基本使用,从本地上传代码托管: 一.从无到有:先注 ...
- python-对于mysql数据库的操作
python操作mysql数据库 问题:DDL,DCL,DML的区别? 语言与框架:jdbc/odbc操作数据库 java(ibatis/hibernate/jpa)操作数据库 客户端工具:navic ...
- python2.7入门---多线程
多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹 ...
- Hadoop命令大全
Hadoop命令大全 分类: 云计算2011-03-01 15:04 6852人阅读 评论(0) 收藏 举报 hadoop作业任务集群class脚本 1.列出所有Hadoop Shell支持的命令 ...
- 补交 20155202 蓝墨云班课 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能
蓝墨云班课 编写MyCP.java 要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX ...
- 10.11课后练习——MyOD系统调用版本
MyOD系统调用版本 题目要求 参考教材<深入理解计算机(第三版)>第十章内容 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XX ...