20172320 2017-2018-2 《Java程序设计》第十周学习总结

Posted garolwz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20172320 2017-2018-2 《Java程序设计》第十周学习总结相关的知识,希望对你有一定的参考价值。

20172320 2017-2018-2 《Java程序设计》第十周学习总结

教材学习内容总结

1、集合是一种对象,类似于保存其他对象的存储库
- 集合的同构意味着这种集合保存类型全部相同的对象;异构意味着可以保存各种类型的对象
2、抽象数据类型(ADT)是由数据和在该数据上所实施的具体操作构成的集合。
- ADT有名称、值域和一组允许执行的操作
- ADT上可以执行的操作与底层的实现分离开了
3、一个动态数据结构用链来实现,动态数据结构的大小规模随需要增长和收缩
4、线性数据结构
- 队列:类似于列表,队列的元素存取方式有限,是一种以先进先出方式管理数据的线性数据结构
- 堆栈:一种以后进先出方式管理数据的线性数据结构
5、非线性数据结构
- 树:树是一个非线性数据结构,由一个根节点和构成层次结构的多个节点组成。除根节点外的所有节点称为内部节点,没有子节点的节点称为叶节点。根节点在顶层,叶节点在底层。二叉树和树的操作有所不同
- 图:没有类似于树根节点那样的初始入口点。一个节点到另一个节点的连接称为边,连接一个图内各节点的边数一般没有限制
6、Java集合类API:定义了几种表示不同类型集合的类
- 泛型:Java集合类ARI中的类定义为泛型,指一个集合所管理的对象的类型要在实例化该集合对象时才确定,泛型保证了集合中对象类型的兼容性

教材中遇到的问题和解决过程‘

  • 问题1:队列和堆栈?
  • 问题1解决方案:
  • 队列:队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表
    (1)允许删除的一端称为队头
    (2)允许插入的一端称为队尾
    (3)当队列中没有元素时称为空队列
  • 堆栈:限制仅在表的一端进行插入和删除运算的线性表
    (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。
    (2)当表中没有元素时称为空栈
  • 作用:堆栈:1.用于符号匹配
    2.用于计算代数式
    3.构造表达式
    4.用于函数调用
    (2、3可以用二叉树来解决)

  • 相同点:1.都是线性结构。
    2.插入操作都是限定在表尾进行。
    3.都可以通过顺序结构和链式结构实现。
    4.插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。
    5.多链栈和多链队列的管理模式可以相同。
  • 不同点:1.删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
    2.应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
    3.顺序栈能够实现多栈空间共享,而顺序队列不能。

  • 问题2:泛型的理解
  • 问题2解决方案:
    本质:为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中
    例子:见参考链接
    特性:泛型只在编译阶段有效
    使用:- 泛型类:用于类的定义中,通过泛型可以完成对一组类的操作对外开放相同的接口
    - 泛型接口:与泛型类的定义及使用基本相同,泛型接口常被用在各种类的生产器中
    - 泛型方式
    优点:- 把运行时期的问题提前到了编译期间
    - 避免了强制类型转换
    - 优化了程序设计,解决了黄色警告线问题,让程序更安全

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

上周考试错题总结

  • What does the following method compute? Assume the method is called initially with i = 0
    public int question9(String a, char b, int i)
    {
    if (i = = a.length( )) return 0;
    else if (b = = a.charAt(i)) return question9(a, b, i+1) + 1;
    else return question9(a, b, i+1);
    }
    A .the length of String a
    B .the length of String a concatenated with char b
    C .the number of times char b appears in String a
    D .returns 1 if char b appears in String a at least once, and 0 otherwise
    E .the char which appears at location i in String a
    分析:该方法将字符串a中的每个字符与char b进行比较,直到i到达字符串a的长度。1被添加到每个匹配的返回值中。

  • A recursive algorithm is superior to an iterative algorithm along which of the following criteria?
    A .The recursive algorithm is easier to debug
    B .The recursive algorithm is computationally more efficient
    C .The recursive algorithm is more elegant
    D .The recursive algorithm requires less memory to execute
    E .all of the above
    分析:为了简单起见,数学通常递归地定义函数

  • The difference between direct and indirect recursion is
    A .direct recursion occurs when a method invokes itself; indirect recursion occurs when there is an intervening method
    B .indirect recursion occurs when a method invokes itself; direct recursion occurs when there is an intervening method
    C .direct recursion only occurs with methods declared to be private; indirect recursion can occur with methods declared to be private, protected, or public
    D .indirect recursion only occurs with methods declared to be private; direct recursion can occur with methods declared to be private, protected, or public
    E .none of the above
    分析:直接递归意味着方法直接调用自己,而不使用中介方法。当再次调用原始方法之前有一个或多个中介方法时,就会发生间接递归。

    结对及互评

点评过的同学博客和代码

  • 本周结对学习情况
    20172327
    20172317
  • 结对学习内容
    ?教材第11,12章
    ?阅读11.1-11.6、12.1-12.3章节
    ?完成课后自测题,并参考答案学习
    ?完成课后练习题
    ?完成程序设计项目:至少完成PP11.1、PP11.2、PP12.1、PP12.9

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 67/67 1/4 20/20
第二周 328/395 1/5 20/40
第三周 523/851 1/6 20/60
第四周 1070/1921 1/7 20/80
第五周 608/2529 1/8 10/90
第六周 608/2899 1/9 20/110
第七周 429/3328 1/10 20/130
第八周 804/4131 1/11 20/150
第九周 521/4652 1/12 20/170
第十周 600/5252 1/13 20/190

参考资料






































































以上是关于20172320 2017-2018-2 《Java程序设计》第十周学习总结的主要内容,如果未能解决你的问题,请参考以下文章

20172320 2017-2018-2 《程序设计与数据结构》实验二报告

20172320 2017-2018-2 《Java程序设计》第八周学习总结

20172320 2017-2018-2 《Java程序设计》第十周学习总结

2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算

20165218 2017-2018-2 《Java程序设计》第一周学习总结

20172320 结对编程项目-四则运算 第二周 阶段总结