20162325 金立清 S2 W5 C14

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

关键内容摘要


集合是收集并组织其他对象的对象
集合中的元素一般由加入集合的次序或元素之间某些固有的关系而组织
集合是隐藏其实现细节的一个抽象名称
数据结构是用来实现集合的基本程序设计结构
栈以LIFO的方式处理元素——最后进入的元素最先离开
程序员应该选择与所需管理的数据的类型相匹配的结构
多态引用使用对象的类型而不是引用的类型来判定要调用的是哪个方法
Java接口定义了一组抽象方法,能用来将抽象数据类型概念与它的实现分开
通通常过使用接口名作为返回值类型,接口机制可让方法与实现栈的具体的类分开
栈是计算后缀表达式时使用的理想数据结构
错误和异常代表不常见或不正确的处理
集合操作的实现细节不应该影响使用者与集合进行交互的方式
处理异常情形的方式,决定是集合还是集合的使用者来控制具体的行为
考虑到效率,数组实现的栈将栈底放在下标为0的位置
可用对象引用变量来创建链式结构
链表由对象组成,其中每个对象指向表中的下一个对象
链表根据需要动态变大,本质上没有容量限制
修改引用的次序对链表的维护很重要
处理链表中的第1个节点通常需要特殊处理
实现带哨兵结点或虚位结点作为第1个结点的表,可以去掉处理第1个结点这种特殊情形
保存在集合中的对象不能包含所用数据结构的任何实现细节
有效实现了相关操作的集合的任何一种实现方案都能用来解决问题
栈的链式实现方案在链表的一端添加和删除元素
java.util.Stack类派生于Vector,给栈带来一些不适当的操作

Tips


14.1
集合分为线性和非线性
集合是一个抽象概念,用户通过接口与集合进行交互

14.2
栈是一个线性集合,其元素的添加和删除都在一端进行
如果发现在解决一个具体问题时需要访问集合的元素或是集合底部的元素,则不适合找。
当不允许改变栈又想查看栈中的内容时,可以用toString操作

  • 栈的概念示意图

14.3
类型兼容的概念是指将一个对象赋给一个引用是否合法
ArrayList保持任何类型的对象
使用泛型可以创建能用来安全有效地保存任意对象的集合

14.4
字处理器中的回退操作常用栈来实现

14.5
后缀表达式计算规则:自左至右扫描,将每步运算作用于紧邻它之前的两个操作数,并用结果代替这个运算符
一个较大的后缀表达式用栈最合适
操作数作为Integer对象入栈,而不是作为基本的整型类型的值入栈。因为栈数据结构保存的是对象

14.8
在Java Collections API框架中,类的名字既表示数据结构又表示集合
push、pop、peek的阶都是O(1)

14.9
存储在链表中的对象常称为表的结点
必须使用一个单独的引用变量指向表的第一个结点,结点的next引用为null时表示表的结束
数组固定大小,链表无容量上限

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


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


  • 问题1:无法正常git add,git commit,文件名显示黑色,但码云上并没有上传成功
  • 问题1解决方案:王老师耐心帮我查找问题,点击 VCS - Refresh File Status后便恢复正常

代码托管

上周考试错题总结


  • 还未公布答案和解析

本周结对学习情况


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


  • 五篇博客真的是要写到吐血,加上还有校运会训练,出礼仪,举办老乡会等活动,以至于熬了这学期以来的第一个通宵。。。

学习进度条


代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 58/58 1/1 10/10
第二周 8/18
第三周 134/192 3/4 12/ 30
第四周 2/6 12/42
第五&六周 750/ 6595 5/11 24/66
  • 计划学习时间:20小时

  • 实际学习时间:20小时

  • 改进情况:多思考,多尝试

参考资料


posted @ 2017-10-15 22:58  20162325金立清  阅读(227)  评论(0编辑  收藏  举报