20172323 2018-2019-1 《程序设计与数据结构》第四周学习总结

20172323 2018-2019-1 《程序设计与数据结构》第四周学习总结

教材学习内容总结

本周学习第六章--列表
6.1列表集合

  • 列表集合是一种概念性表示法,其思想是使事物以线性列表的方式进行组织,列表集合没有内在的容量大小,可以随需要而增大。
  • 列表集合比栈和队列更一般化,可以在其中间和末端进行添加和删除元素
  • 列表集合的分类
类型 特点
有序列表(ordered list) 元素按照元素的某种内在特性进行排序
无序列表(unordered list) 元素间不具有内在顺序,按照元素在列表中的位置进行排序
索引列表(indexed list) 元素可以用数字索引来引用
  • 对于任何已添加到有序表中的元素,只要给定元素的关键值,同时列表已经定义了元素的所有关键值,那么它在列表中就有一个固定的位置
  • 索引列表的索引值总是连续的

6.2 Java集合API中的列表
6.3 使用无序列表:学习计划
6.4 索引列表使用示例:Josephus问题
6.5 列表ADT

  • 有序列表和无序列表之间的差别主要体现在往列表添加元素上

6.6 使用数组实现列表

  • 只有Comparable对象才能存储在有序列表中

6.7 使用链表实现列表

教材学习中的问题和解决过程

  • 问题1:教材P97提到ProgramOfStudy和Course类实现了Serializable接口,不明白这个接口代表什么意思
  • 问题1解决方案:查阅资料,首先这个接口是用于实现序列化的。序列化是一种用来处理对象流的机制,简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。Java 序列化技术可以使你将一个对象的状态写入一个Byte 流里(系列化),并且可以从其它地方把该Byte 流里的数据读出来(反序列化)。

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

  • 问题1:PP6.11的实现过程中出现了如下图所示的几个问题
    20172323 2018-2019-1 《程序设计与数据结构》第四周学习总结_第1张图片
  • 问题1解决方案:当执行add操作时(将元素添加到列表尾)提示出现空指针的情况,首先粗略地检查一下,发现addToFront和addToRear两个方法都没有考虑列表为空的情况,先加上再说
    20172323 2018-2019-1 《程序设计与数据结构》第四周学习总结_第2张图片
    再执行一次
    20172323 2018-2019-1 《程序设计与数据结构》第四周学习总结_第3张图片
    现在反映的问题是,尽管addToFront和addToRear两个方法都成功把元素添加到了列表中,但似乎计算机并没有将我希望的列表尾认为是xxx.last(),再仔细看一下代码,发现addToRear执行一次后,我并没有将tail指针指向新的尾结点,依然指向添加前的那一个,于是再添加一行tail = lt;//lt为添加进列表的结点,再次执行,就有了正确的运行结果了
    20172323 2018-2019-1 《程序设计与数据结构》第四周学习总结_第4张图片

代码托管

1332964-20181007184134542-1785216730.png

上周考试错题总结


  • 错题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
  • 解析:根本就没有认真读题!后半部分明明已经说了“not the type of the reference",居然也能选错啊。多态引用使用的是该对象的类型(而不是引用的类型)来决定调用哪个版本的方法

  • 错题2:A reference variable can refer to any object created from any class related to it by inheritance.
    A .true
    B .false
  • 解析:一个引用变量可以指向创建自任何与其具有继承相关性的类的任一对象。

  • 错题3:The implementation of the collection operations should affect the way users interact with the collection.
    A .true
    B .false
  • 解析:集合操作的实现细节不应该影响使用者与集合进行交互的方式

  • 错题4:Common features should be located as low in a class hierarchy as is reasonable, minimizing maintenance efforts.
    A .true
    B .false
  • 解析:共同特征应该在合理的条件下尽可能高的至于该层次结构中,以最小化维护工作。

  • 错题5:The most efficient way to implement an array-based stack keeps the top of the stack at the position 0 of the array?
    A .true
    B .false
  • 解析:出于运行效率的考虑,基于数组的栈实现总是使栈底位于数组的索引0处。

结对及互评

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

  • 教材学习内容详实,有自己的理解感悟
  • 排版简洁明了

    代码中值得学习的或问题

  • 代码清晰明了,有自己思考的痕迹
  • 有适当的注解,能帮助别人了解代码的含义
  • 基于评分标准,我给谭鑫的博客打分:5分。得分情况如下:
    正确使用Markdown语法(加1分):
    模板中的要素齐全(加1分)
    教材学习中的问题和解决过程, 一个问题加1分
    代码调试中的问题和解决过程, 一个问题加1分

  • 基于评分标准,我给方艺雯的博客打分:5分。得分情况如下:、
    正确使用Markdown语法(加1分):
    模板中的要素齐全(加1分)
    教材学习中的问题和解决过程, 一个问题加1分
    代码调试中的问题和解决过程, 一个问题加1分

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172305
    • 20172314
    • 结对学习内容
      • 列表
  • 上周博客互评情况
    • 20172305
    • 20172314

其他

国庆假期快乐啊!利用国庆假期敲代码更是欢喜得不行,一不注意就写了2500行代码还是有点骄傲的。不过是否真正汲取到了对等的知识就很难说了,学以致用的能力始终太差,反映在考试上、实践中就差不多是一问三不知,需要别人的帮助才能够起步。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 8/8
第二周 470/470 1/2 12/20
第三周 685/1155 2/4 10/30
第四周 2499/3654 2/6 12/42

参考资料

  • Serializable接口
  • 蓝墨云班课

转载于:https://www.cnblogs.com/Lewandodoski/p/9750556.html

你可能感兴趣的:(数据结构与算法,java,markdown)