zoukankan      html  css  js  c++  java
  • 第八周学习总结-20175218

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

    教材学习内容总结

    1. 第十五章主要讲的就是泛型、链表、堆栈、散列映射、树集以及树映射。
    2. 泛型
      • 泛型的主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。
      • 可以使用“class 名称<泛型列表>”​声明一个类,为了和普通的类有所区别,这样声明的类称作泛型类。
      • 和普通的类相比,泛型类声明和创建对象时,类名后多了一对“<>”​,而且必须要用具体的类型替换“<>”中的泛型。
      • Java泛型重要的一个优点就是:在使用这些泛型类建立的数据结构时,不必进行强制类型转换,即不要求进行运行时类型检查。
    3. 链表
      • 链表是由若干个称作结点的对象组成的一种数据结构,每个结点含有一个数据和下一个结点的引用,或含有一个数据并含有上一个结点的引用和下一个结点的引用。
      • 链表对象可以使用 iterator() ​方法获取一个 Iterator 对象,该对象就是针对当前链表的迭代器。
      • 排序链表或查找某对象是否和链表中的结点中的对象相同,都涉及对象的大小关系。
    4. 堆栈
      • 堆栈是一种“后进先出”的数据结构,只能在一端进行输入或输出数据的操作。
      • 堆栈把第一个放入该堆栈的数据放在最底下,而把后续放入的数据放在已有数据的顶上。
      • 向堆栈中输入数据的操作称为“压栈”,从堆栈中输出数据的操作称为“弹栈”。
    5. 散列映射
      • HashMap<K,V>泛型类实现了泛型接口 Map<K,V>,HashMap<K,V> 类中的绝大部分方法都是 Map<K,V> 接口方法的实现。
      • public Collection values() 方法返回一个实现 Collection 接口类创建的对象,可以使用接口回调技术,即将该对象的引用赋给 Collection 接口变量,该接口变量可以回调 iterator() 方法获取一个 Iterator 对象,这个 Iterator 对象存放散列映射中所有键/值对中的值。
      • 对于经常需要进行查找的数据可以采用散列映射来储存这样的数据,即为数据指定一个查找它的关键字,然后按着键/值对,将关键字和数据一并存入散列映射中。
    6. 树集
      • 树集用 add 方法添加结点,结点会按其存放的数据的“大小”顺序一层一层地依次排列,在同一层中的结点从左到右按“大小”顺序递增排列,下一层的都比上一层的小。
    7. 树映射
      • TreeMap<K,V> 类实现了 Map<K,V> 接口,称 TreeMap<K,V> 对象为树映射。
      • 树映射使用 public V put(K key,V value)方法添加结点,该结点不仅存储数据 value ,也存储和其关联的关键字 key ,也就是说,树映射的结点存储关键字/值对。
      • 和树集不同的是,树映射保证结点是按照结点中的关键字升序排列。

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

    • 问题1:LinkedList链表和ArrayList数组表有什么不同

    • 问题1解决方案:通过上网查资料,得知:

      • ArrayList和Vector使用了数组的实现,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加,删除,插入新的元素或者数据的扩展和重定向。LinkedList使用了循环双向链表数据结构。与基于数组ArrayList相比,这是两种截然不同的实现技术,这也决定了它们将适用于完全不同的工作场景。具体可见博客:链接。这是一篇关于ArrayList和LinkedList的区别,感觉解释得还挺好的。
    • 问题2:不太清楚用迭代器来优化链表

    • 问题2解决方案:在网上翻阅博客,找到了一篇写得不错的博客:点击进入链接

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

    • 问题1:最开始看到例子一就没看懂 E bottom这句是啥意思
    • 问题1解决方案:后来发现前面用public class Cone 声明了这个类,然后这就是用泛型类 E 声明对象 bottom
    • 问题2:一开始看的时候,没看懂import javax.swing.*这句
    • 问题2解决方案:通过上网查询资料,得知:
      • 学名叫导包,就是把那个文件夹下的什么东西拿来,然后我要用。import javax.swing.;分着看这句,import是引入的意思;javax.swing 这个是路径,在 javax 这个文件夹下的 swing 文件夹; , 表示全部的意思;整个这句话的理解就是,把 javax 包里面的 swing 包里面的所有东西引进来。

    代码托管

    statistics.sh脚本运行截图:

    上周考试错题总结

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

    对第四周的课下测试题进行了总结,链接如下:
    第四周测试总结分析

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 1/1 24/24
    第二周 400/600 1/2 15/39
    第三周 600/1200 1/3 18/57
    第四周 700/1900 1/4 18/75
    第五周 800/2700 5/9 18/93
    第六周 800/3500 3/12 28/121
    第七周 800/4300 3/15 18/139

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:24小时

    • 实际学习时间:26小时

    • 改进情况:
      相比于上周,在较少的时间内,完成了更多的任务

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    深入理解sizeof
    trie树详解
    高精度计算
    编写高效的Android代码
    Android Architecture
    AIDL Android中的远程接口
    性能测试常见术语
    软件与软件测试相关
    注解实现Springmvc+jsp步骤
    非注解实现SpringMvc+JSP (一般用不到 主要用于了解研究底层)
  • 原文地址:https://www.cnblogs.com/cjy-123/p/10740776.html
Copyright © 2011-2022 走看看