20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结

20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结

教材学习内容总结

1.集合

  • 定义:专门用于保存信息的对象。
  • 集合的同构和异构:
    • 同构:集合中保存的类型全部相同。
    • 异构:集合中可以保存全部的类型。

2.数据结构

  • 数据结构分类:
    20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结
  • 动态数据结构:一个动态数据结构使用链来实现,它的大小规模可以随意增大减小。
    • 构建链表
      • 格式:

        class Node
        {
        int info;
        Node next;
        }
    • 20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结
  • 线性数据结构
    • 队列(queue)
      • 采取先进先出的方式,使用于有等待特点的排列。
      • 方法摘要:20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结
    • 堆栈(stack)
      • 采取先进后出的方式,使用于有叠加特点的排列。
      • 方法摘要:20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结
  • 非线性数据结构
      • 由一个根节点和构成层次结构的多个节点(内部节点)组成
      • 特殊树——二叉树:二叉树的每个节点不能有超过两个的子节点
      • 图没有初始入口点
      • 在一个图中,从一个节点到另一个节点的连接边称边,边可以是双向的,也可以是单向的。
      • 当事物间的关系比较复杂无法用正常的层次结构来表现时,图是一种很好的选择。

Java集合类API

  • 20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结
  • 泛型:只一个集合所管理的对象的类型要在实例化给集合对象时才确定。

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

  • 问题1:arraylist和linkedlist的区别?
  • 问题1解决方案:通过查找得知:(1)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。(2)对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。(3)对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。但这一点要看实际情况的。若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList。但若是批量随机的插入删除数据,LinkedList的速度大大优于ArrayList。因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。
  • 问题2:数据结构的划分好像和我们上课讲的不一样,那么数据结构究竟在java中有哪些方法?
  • 问题2解决方案:在查找过程中发现了一张类型很全的图,其中实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口
    20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结

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

  • 问题1:在运行PP13.3的驱动类时,输出的结果为null.
    20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结
  • 问题1解决方案:使用DeBug进行调试发现,如果我设置的循环条件是list不为空的话,当它为空时才能跳出循环,而当它为空时,等于说原来指针后面的东西全部丢掉了,所以最后输出结果也为空。解决方法是又添加了一个指针pre,使pre=list,然后把所有原来是list的地方都改成pre,这样就避免了list变为空,程序也就能正常运行了。20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结

代码托管

20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结

上周考试错题总结(正确为绿色,错误为红色)

  • 错题1:Assume infile is a BufferedReader for a textfile and that the textfile is empty. What is returned from the message infile.readLine( ); ?
    • A . 0
    • B . null
    • C . a special character known as the End-of-file marker (EOF)
    • D . none of the above, the message causes a NullPointerException to be thrown
    • E . none of the above, the message causes a EndOfFileException to be thrown
  • 原因及理解情况:当时查JDK的时候它的原话是“如果已到达流末尾,则返回 null”,20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结所以觉得B不对应该是抛出一个错误。后来想了一下加入文件为空的话等于说它刚进去就达到了末尾,所以会返回“null”。
  • 错题2:If an exception arises in a catch statement, and the exception is of the type caught by the catch statement, then the catch statement catches the same exception. For instance, if the following catch statement first catches an ArithmeticException and, while executing, throws another ArithmeticException, it is able to catch the second ArithmeticException as well the first.
    catch (ArithmeticException ex) {...}
    • A . true
    • B . false
  • 原因及理解情况:catch语句不会捕获从它自身内部抛出的异常,尽管catch语句可以在其中嵌套额外的try和catch语句。

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • 优点:每周重要成长记录很详细,在错题总结中有自己的实践。
    • 问题:博客排版还需加强,尤其是图片的摆放。从问题总结中感觉对课本知识的挖掘不是很深入。教材内容总结还可以更详细一点。错题总结中没有价值的错题可以删去_(:з」∠)_
  • 代码中值得学习的或问题:
    • 优点:代码相比我的更加简洁,并且在适当的地方有注释。commit写的很好。
    • 问题:在编译过程中发现他在数组这方面运用的不是很好。

      点评过的同学博客和代码

  • 本周结对学习情况
    • 20172322
    • 结对学习内容
      • 共同讨论例8.3和例8.8的某些代码,不懂的地方先相互解决,解决不了时找学长答疑。
      • 讨论PP8.5,尤其是最后计算标准方差时,两个人的代码基本是一个意思,但是结果都不对,而且不对的结果也不一样。所以就对每个人的代码进行分部运行共同寻找问题。

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

  • 最近看完了一本书,里面的主角的一句话我很喜欢,感觉对待java学习、对待其他学业学习、对待人生,都应该有这种态度:珍惜天赋,保持悲悯。这里的“悲悯”我觉得可以理解为是一种谦虚,同样是一种包容,还是一种求真和探索。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周120/1201/19/9
第二周246/3661/29/18
第三周785/11212/415/33
第四周615/17361/520/53
第五周1409/26451/624/77
第六周561/32061/720/97再次搞清了一些自己有点含糊不清的概念
第七周63/32691/815/112
第八周2476/57453/1190/201
第九周824/65951/1220/221
第十周919/75142/1420/241
  • 计划学习时间:20小时

  • 实际学习时间:20小时

  • 改进情况:很高兴最近的java学习能保持在一个稳定的时间长度内,我觉得这说明了我的学习方法终于成熟了。

参考资料

  • 《Java程序设计与数据结构教程(第二版)》

  • 《Java程序设计与数据结构教程(第二版)》学习指导

  • java中的各个数据结构区别
  • java数据结构的选择

相关推荐