zoukankan      html  css  js  c++  java
  • 20172306 2018-2019 《程序设计与数据结构》第四周总结

    20172306 2018-2019-2 《Java程序设计》第四周学习总结

    教材学习内容总结

    • 列表集合
      • 列表集合是一种概念性表示法,其思想是使事物以线性列表的方式进行组织,没有内在的容量大小,它可以随着需要而增大。
      • 列表集合的三种类型:有序列表:某种内在特性进行排序;无序列表:不具有内在顺序,按其在列表中的位置进行排序;索引列表:可以用数字索引来引用
      • 无序列表中的元素按使用者所选择的任意方式排序
      • 索引列表和数组的根本区别在于:索引列表的索引值总是连续的,如果删除了一个元素,其他元素的位置就会像“坍塌”了一样以消除产生的间隙,当插入一个元素时,其他元素的索引将进行位移以腾出位置。
    • 使用无序列表
      • 在其中学习到了一个名为串行化的过程,以二进制流的形式读取和写入对象。

    串行化,Serializable接口没有任何方法,主要为了表明该对象可以转换为串行化的形式

    • 列表ADT
      • 主要有removeFirst removeLast remove first (查看前端元素) last (查看末端元素) contains (确定列表是否含有某个元素) isEmpty size 等方法 ,对于添加,无序列表还有addToFront addToRear addAfter(把元素添加到列表中某个已有元素的后面)
    • 使用数组实现列表
      • 因为列表可以从两端添加或删除元素,因此可以使用环形数组的方法。
      • 列表前端固定在索引0处,整数变量rear表示了列表的元素数目,以及把元素添加到列表末端时的下一个可用位置。
      • remove操作的复杂度为O(n);contains操作的复杂度为O(n) ;add操作的复杂度为O(n);addAfter操作的复杂度为O(n)。
      • 只有Comparable对象才能存储在有序列表中,无序列表和索引列表不要求它们存储的元素是Comparable的。
      • addToFront操作必须首先移动列表中的当前元素,以便为新元素腾出索引0的位置
    • 使用链表实现列表
      • remove操作的复杂度为O(n)

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

    • 问题1:在列表的三个类型中,对于索引列表还是不怎么懂,而且后面在说和数组的最大区别方面,我也没反应过来,我觉得都差不多啊
    • 问题1解决方案:就是索引列表是可以用数字索引来引用,至于书中说的数组与索引列表的区别,就是,索引列表没有容量的限制,当中间删除一个值时,其后的会自动调到前面去,而数组不是,数组是有一定容量的,当中间删除时,是要手动将空位补上的。
    • 问题2:有一个方法是remove(E Object)是说删除指定对象的第一个出现,我对于这个不是很懂。
    • 问题2解决方案:后来在看了一些其他人的博客,明白,有一个remove(int index)是指删除指定索引处的元素,这个的意思是,在遍历列表时,对于所在的列表中和Object对象一样的第一个出现对象进行删除。
    • 问题3:为什么只有Comparable对象才能存储在有序列表中?
    • 问题3解决方案:我在网上找了,没有找到很确切的说法和结论。不过我再看书和查看网上的一些其他说法时,我觉得是因为,有序列表是通过某种内在特性进行排序,而这种排序方法需要Comparable进行比较,否则无法成为有序,而另两个却和有序列表不同,因此只有Comparable对象才能存储在有序列表中

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

    • 问题1:在做使用数组完成列表时,在测试时出现了这种问题

    • 问题1解决方案:后来通过单步调试发现了问题出在了last和size的方法上。后来我就单步调试看看错在了哪,发现在last中最开始是
      T result = list[rear]
      但是书中写到了rear表示的是列表中的元素数目,以及把元素添加到列表末端时的下一个可用位置,通过单步调试可知list[rear]为null,还有size(),最开始我用的是别的变量,但是发现它在其他操作中还需要对该变量进行调整,所以后来想到了rear这个量。

    • 问题2:对于后来的PP6.17,我最开始我不知道怎么开始,觉得好复杂啊

    • 问题2解决方案:后来我看了范雯琪同学的码云,然后看了书中,有句话说,Comparable接口定义了compareTo方法,当执行对象为小于、等于、大于传入参数时,该方法将分别返回一个负整数、0或者一个正整数。我觉得它就是根据这个过程来写的,通过正整数和负整数进行判断排序。

    代码托管

    上周考试错题总结

    结对及互评

    点评模板:

    • 博客中值得学习的或问题:
      • 内容写的很仔细
      • 在问题方面分析的也很好

    点评过的同学博客和代码

    • 本周结对学习情况
      • 20172325
      • 结对学习内容
        • 一起对之前的实验进行了总结
        • 一起看了第六章的书
        • 一起编程了第六章的内容

    其他(感悟、思考等,可选)

    第六章的内容其实和之前的都很有联系,其实越来越说明,学好数组和链表是多么的重要,我觉得之前我学的不咋好,但是在不断的用数组和链表进行编程时,自己对于这两个理解比以前深多了而且懂得也多了。
    

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0/0 1/1 6/6
    第二周 985/985 1/1 18/24
    第三周 663/1648 1/1 16/40
    第四周 1742 /3390 2/2 44/84

    参考资料

  • 相关阅读:
    python_xrange和range的异同
    python_学习笔记
    Python IDLE快捷键一览
    Git命令详解
    Git 分支-利用分支进行开发的工作流程
    JavaScript-面向对象
    getWritableDatabase()与getReadableDatabase()的区别:
    「学习笔记」爬山算法与模拟退火
    python基础2
    python基础1
  • 原文地址:https://www.cnblogs.com/lc1021/p/9750228.html
Copyright © 2011-2022 走看看