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、要串行化一个对象,必须与一定的对象输入/输出流联系起来,通过对象输出流将对象状态保存下来,再通过对象输入流将对象状态恢复。

代码调试中的问题和解决过程

  • 问题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分。得分情况如下:
  1. 正确使用Markdown语法(加1分):

  2. 模板中的要素齐全(加1分)

  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  • 博客中值得学习的或问题:

    • 内容详略得当;
    • 代码调试环节比较详细;
  • 基于评分标准,我给本博客打分:9分。得分情况如下:
  1. 正确使用Markdown语法(加1分):
  2. 模板中的要素齐全(加1分)
  3. 教材学习中的问题和解决过程, 一个问题加1分
  4. 代码调试中的问题和解决过程, 一个问题加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软件结构与数据结构》第四周学习总结的更多相关文章

  1. 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...

  2. 20172329 2018-2019 《Java软件结构与数据结构》实验三报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

  3. 20172329 2018-2019-2 《Java软件结构与数据结构》实验二报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

  4. 20172329 2018-2019《Java软件结构与数据结构》第一周学习总结

    2018-2019-20172329 <Java软件结构与数据结构>第一周学习总结 在这学期就已经大二了,也已经步入了学习专业课的核心时间,在这个阶段,我们应该了解自己的学习情况,针对自己 ...

  5. 20172302 《Java软件结构与数据结构》实验三:查找与排序实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月19日 必修/选修: 必修 实验内容 (1) ...

  6. 20172302 《Java软件结构与数据结构》实验二:树实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参 ...

  7. 20172302 《Java软件结构与数据结构》实验一:线性结构实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年9月26日 必修/选修: 必修 实验内容 (1)链 ...

  8. 20172301 《Java软件结构与数据结构》实验三报告

    20172301 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

  9. 20172301 《Java软件结构与数据结构》实验二报告

    20172301 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

  10. 20172301 《Java软件结构与数据结构》实验一报告

    20172301 <Java软件结构与数据结构>实验一报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

随机推荐

  1. MySQL----MySQL数据库入门----第二章 数据库和表的基本操作

    2.1 数据库和数据库表的创建 ①数据库的创建(在数据库系统中划分一块存储数据的空间): create database 数据库名称 [charset 字符集]: ②数据库表的创建 use 数据库名 ...

  2. Discuptor入门(二)-实例

    前言:最近在项目中看到有人使用的discuptor框架,因为没有接触过所以网上找了些资料.但最终发现开荒者太少,好像没什么人用那.最后感觉还是官方入门文档靠谱点.所以自己翻译了下(翻译器~),希望能帮 ...

  3. django中的auth详解

     Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等 ...

  4. python基础知识你学会了多少

    前言 学习是一个循序渐进的过程,不在于你学了多少,而在于你学会了多少.(装个b好吧,hhhh) 知识总结 之前一直想在网上找一个总结好的笔记,但是一直都没有找到,因此下定决心要总结一下,里面的都是在学 ...

  5. 局域网,Internet,广域网

    局域网:覆盖范围小,自己花钱买设备,带宽固定,自己单位维护 网线100米以内 带宽10m 100m 1000m Internet:ISP,自己的机房,对网民提供访问Internet连接 广域网:距离远 ...

  6. POJ_1679_The Unique MST(次小生成树)

    Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definit ...

  7. 【转】Excel-VBA操作文件四大方法之三

    三.利用FileSystemObject对象来处理文件 FileSystemObject对象模型,是微软提供的专门用来访问计算机文件系统的,具有大量的属性.方法和事件.其使用面向对象的“object. ...

  8. 20155218 《Java程序设计》实验二(Java面向对象程序设计)实验报告

    20155218 <Java程序设计>实验二(Java面向对象程序设计)实验报告 一.实验内容及步骤 (一)单元测试 主要学习安装和使用junit来测试编写的程序,并学习以TDD(Test ...

  9. 20155302杨效宸《Java程序设计》课程总结

    20155302杨效宸<Java程序设计>课程总结 一.每周作业 第一周学习总结:http://www.cnblogs.com/STILLlover521/p/6457914.html 第 ...

  10. 【课堂实践】Myod

    实验内容 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 实验代码 od.java 截图 遇到的问题及解决办法 一开始想的方向是将得出的功能结果 ...