20172306《Java程序设计》第十周学习总结

教材学习内容总结

本章主要的讲的是集合有关的知识:

1.集合与数据结构

- 集合是一种对象,集合表示一个专用于保存元素的对象,并该对象还提供增添、删除等管理所保存元素的服务。

- 同构:就是存放同种类型。异构:就是可以存放不同类型的。

- 一个抽象数据类型室友数据和在该数据上所实施的具体操作构成的集合。

- 对象实际上就是将变量和相关的方法封装在一起的实体。

- 集合可以用各种方式实现,我认为这是集合的一个很特别的方面。

2.数据结构的动态表示

- 数组是有局限性的,根据第八章可以知道,我们在创建一个数组的时候需要给数组一定的长度,对于数组来说,每当需要扩大数组时,就创建一个更大的数组并将原有的数组复制到新数组。这说明数组有局限;而我们学习的ArrayList的长度不是固定的,这就有很大的空间给我们的设计者。

- 学习了动态链接的列表。主要是是要了解它在增加和删除还有插入的过程,对于删除和插入已经在码云中有代码。这一部分是我认为比较重要的一点。对于在串联的时候,应该将其看作一个指针,继而不断的进行联系,还要考虑到连接方式的先后顺序,避免会出现丢失的现象。

3.线性数据结构。

- 队列类似于列表,队列使用先进先出。堆栈使用后进先出。对于栈的内容,在编程四则运算中就运用了栈的相关内容。

- 学习了LinkedList的一些内容,在教材问题中有解答。

4.非线性数据结构

- 树:由一个根节点和构成层次结构的多个节点组成。类之间的继承关系可以用一棵普通的树结构来表示。用静态表示方式(数组)实现树数组结构也是有可能的。

- 图:图没有像树根节点那样的初始入口点。与树类似,虽然可以用数组实现图,但是更常用动态链实现图。

5.Java集合类API

- Java集合类API中的类定义为泛型,是指一个集合所管理的对象的类型要在实例化该集合的对象时才确定。泛型保证了集合中对象类型的兼容性。

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

  • 问题1:书中写了抽象数据类型,但是我还是对于书中写的不是很理解。

  • 问题1解决方案:书中说ADT是由数据和在该数据上所实施的具体操作构成的集合。ADT之所以被称为抽象数据类型,是因为ADT上可以执行的操作与底层的实现分离开了。后来我又上网查了一下有关ADT的有关知识,主要内容是开发者可以利用ADT的方法来使用ADT的相关属性,但是并不知道它究竟是如何操作的。线性表、堆栈、队列就属于ADT。线性表,堆栈和队列的内部结构可以用许多方式实现。例如,我们可以使用一个有序数组或者一个链表来实现每个结构。关键的一点是不论你如何实现其内部结构,它对外的接口总是不变的。这使得你能够修改或者升级底层的实现过程而不需要改变公共接口部分。具体我参照了这篇博客API

  • 问题2:对于书中说要做insert的方法和delete的方法。最开始我大致懂得它的大致思路,但是其具体的流程还是不懂。

  • 问题2解决方案:老师在课上讲了,但是后来再想的时候,就记得不清晰了,然后问了同学,才知道它整个的流程是怎样的。

    1.插入:首先要判断是在开头还是在中间,如果是开头,只需要将指针指向要插入的部分,然后和之后的相连接,就可以了。如果是在中间的话,需要先将所插入部分和后面的部分相连,然后再和前面的相连接,这样的顺序是为了避免后面的东西被当做垃圾而消失。

    2.删除:如果是最后一个的进行删除,只需要将前一个的下一个指针为空即可。如果是要删除中间的某个,只需要将其前一个的指针指向要删除的后一个就可以,这样越过要删除的,就可以保证链条中删除这个。

  • 问题3:老师在上课的时候有提到Linkedlist的相关知识,所以自己上网找了一下。

  • 问题3解决方案:LinkedList我自己通过网上的一些教程,利用IDEA学习了一些有关的内容。

    建立一个Linkedlist的对象,实现对其中进行增加内容:

    对于已有的一部分,对首项和尾项进行了增添:

    对首项进行删除以及对指定的索引的地方进行删除:

    对指定的索引处的值进行改变:

其实还有很多内容,包括Linkedlist和数组以及队列还有Arraylist的转换等内容,还在继续学习。

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

 在学习的时候,这一章的内容主要内容都是大同小异的所以只要了解其中的套路就可以编写,所以这周的代码我没有什么具体的问题,有几个比较基础的问题已经问了同学解决了。

代码托管

上周考试错题总结

本题选B 重载只是为具有不同参数列表的方法提供了备选方案。重写提供了多态性,因为适当的方法是根据当前被引用的对象而调用的。嵌入是类中包含的类。抽象与多态没有任何关系。封装是使用可见性修饰符(公共的、私有的、受保护的)实现的。

本题选A Upcasting是完全安全的,它是Java支持的单一继承结构的产物。相比之下,Downcasting必须由程序员显式地完成。Java只在一个方向上自动转换。在使用的可见性修饰符方面,Upcasting和Downcasting的规则并不依赖于任何方式。

本题选A 虽然继承和接口支持多态,但只有在有后期绑定时才会这样做。但是,重载是多态性一(方法)名的一种形式,多个主体,只要程序使用重载,多态就在使用中。



  • 本题A 精确!由于println()本质上是高度多态的,所以它能够正确地打印各种预定义的(库)和内置(原始)数据。

结对及互评

结对伙伴

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

  • 他在博客中写有关数组和集合之间的区别,看了之后自己也学到了这种知识。

  • 他在看书的时候想到的问题都很有思想,而且可以抛开书本看网上的内容并学习,值得学习。

  • 基于评分标准,我给本博客打分:8分。

点评过的同学博客和代码

20172325

  • 本周结对学习情况

    • 结对学习内容

      • 我们一起学习了第十三章的内容。
      • 继续了四则运算的项目,将项目完善。
      • 进行了蓝墨云的实验。

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

第十三章学完了,我们《Java程序设计和数据结构》这本书就算是学完了。这一章的内容不是很多,而且自己是在老师讲完课之后自己才看的书,所以理解起来更明白些。总的来说,这本书结束了,虽然学到了一些东西,但是可能放在Java的时间不够多再加上进程太快了,自己对于整本书的掌握一直处于半懂半不懂的程度。如果要我自己对于这个学习打一个分的话,我只能给自己打5分,没有及格。所以在之后的学习中,如果有可能,还希望能够重新温习一下。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 193/200 1/1 20/20
第二周 247/440 1/1 22/42
第三周 445/895 2/2 20/62
第四周 885/1780 1/1 43/105
第五周 775/2555 1/1 55 /160
第六周 1171/3726 1/1 38/198
第七周 596/4322 1/1 60/258
第八周 569/4891 2/2 55 /313
第九周 1890/ 6781 1/1 66/379
第十周 1021/7793 1/1 70/449

参考资料

20172306《Java程序设计与数据结构》第十周学习总结的更多相关文章

  1. 20172306 2018-2019-2 《Java程序设计与数据结构》第九周学习总结

    20172306 2018-2019-2 <Java程序设计与数据结构>第九周学习总结 教材学习内容总结 无向图 图是由结点和这些结点之间的连接构成 就图来说,结点叫做顶点,结点之间的连接 ...

  2. 20172306 2018-2019 《Java程序设计与数据结构》第一周学习总结

    20172306 2018-2019 <Java程序设计与数据结构(下)>第一周学习总结 教材学习内容总结 第一章 概述 (程序=数据结构+算法 软件=程序+软件工程) 1.1 软件质量 ...

  3. 20172306《Java程序设计与数据结构》第九周学习总结

    20172306<Java程序设计>第九周学习总结 教材学习内容总结 第十一章: try-catch语句.其中还有finally语句.try是进行某些操作,catch是捕获异常,并通过某些 ...

  4. 《JAVA程序设计》_第十周学习总结

    一.学习内容 12.1进程与进程 程序是一段静态的代码,进程是程序的一次动态执行过程,这个过程也是进程本身从产生.发展至消亡的过程. 线程不是进程,是比进程更小的执行单位.但与进程不同的是,线程的中断 ...

  5. 王彪-20162321-Java程序设计与数据结构2nd-第十周学习总结

    学习目标 讨论有向图和无向图 定义带权图并讨论它们的应用 定义图的广度优先遍历和深度优先遍历 定义最小生成树 讨论图的实现策略 书中图的基本定义 图是由结点及结点间的连接组成的,结点称为顶点,结点间的 ...

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

    2018-2019-20172329 <Java软件结构与数据结构>第九周学习总结 教材学习内容总结 <Java软件结构与数据结构>第十五章-图 一.图及无向图 1.图的相关概 ...

  7. 20172319 《Java程序设计教程》 第9周学习总结

    20172319 2018.05.06-05.14 <Java程序设计教程>第9周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考 ...

  8. 20172319 《Java程序设计教程》 第10周学习总结

    20172319 2018.05.09-05.21 <Java程序设计教程>第10周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周 ...

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

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

  10. 20172319 《Java程序设计教程》第8周学习总结

    20172319 2018.04.24-05.03 <Java程序设计教程>第8周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考 ...

随机推荐

  1. java.lang.UnsupportedClassVersionError 异常

    运行的JDK版本和开发环境的版本不一致导致 解决办法:更换运行环境的JDK版本,使其与运行环境一致.

  2. vue 异步请求

    摘自 ECMAScript 6 简介: 大家习惯将 ECMAScript 6.0 简称为 ES6,它是 Javascript 语言的下一代标准,它的目标,是使得 Javascript 语言可以用来编写 ...

  3. linux 内核根文件系统

    参考: http://blog.csdn.net/guopeixin/article/details/5962482 http://www.yunweipai.com/archives/1184.ht ...

  4. cacti有图无数据解决办法

    Cacti 安装不久,图像界面出来了,但是一直没有数据. Cacti 日志中的错误或警告也都一个个全部解决.有些需要访问文件的权限也都有了. 1.system utilities –>Rebui ...

  5. BOM 对象--location、navigator、screen、history

    1.location 对象 location提供了与当前窗口中加载的文档有关的信息,还有一些导航功能.需要注意的是,window.location 和 document.location 引用的是同一 ...

  6. burpsuite的使用(二)

    爬网 为了爬网更加顺畅,先关掉截断功能 先进行手动爬网 然后进到目标页面需要点的地方和输入的地方去操作一下,在spider下就能看到爬网的记录 自动爬网 当你爬网时需要登录身份验证时,提示输入,也可以 ...

  7. arachni安装使用

    下载:http://www.arachni-scanner.com/download/#linux 解压到不是中文的目录下:tar -zxvf arachni-1.5.1-0.5.12-linux-i ...

  8. 全国绿色计算大赛 模拟赛第一阶段(C++)第1关:求和

    挑战任务 这次“绿盟杯”大赛,小明作为参赛选手在练习的时候遇到一个问题,他要对一个范围的两个数进行数位的累加,例如有两个数 15,19 则 他们的数位和应该为:1+5+1+6+1+7+1+8+1+9, ...

  9. Android 实现简单 倒计时60秒,一次1秒

    倒计时功能如上图所示,其实就几行代码即可实现效果啦!!! /** 倒计时60秒,一次1秒 */ CountDownTimer timer = new CountDownTimer(60*1000, 1 ...

  10. django的csrf

    csrf:跨站请求网站 如果是ajax提交,可以按照下面的方式处理 <script src="/static/jq/jquery-3.3.1.js"></scri ...