2018-2019-20172321 《Java软件结构与数据结构》第四周学习总结

教材学习内容总结

第六章

  • 6.1列表集合

  • 列表集合是一种概念性表示法,其思想是使事物以线性列表的方式进行组织。

  • 列表集合分为三类:有序列表、无序列表、索引列表

    • 有序列表:其元素按照元素- 的内在特性排序。
    • 无序列表:元素只按照它们在列表的位置进行排序。
    • 索引列表:元素根据自己的数字索引进行排序。
  • 6.2Java集合API中的列表

  • 列表的一些操作

    操作 描述
    add(E element) 向列表末端添加一个元素
    add(int index,E element) 在指定索引处插入一个元素
    get(int index) 返回指定索引处的元素
    remove(int index) 删除指定索引处的元素
    remove(o objecr) 替代指定索引处的元素
    set(int index, E element) 返回列表中的元素数量
  • Java集合API提供的列表类主要是支持索引列表;Java集合API中提供了使用数组实现的ArrayList类和使用链表实现的LinkedList类,它们都可以存储由泛型参数E定义的元素,同时也都实现了List接口。

  • 6.6使用数组实现列表

  • 基于数组实现的列表首先要把列表的一端固定在索引0处,设置一个整数变量rear表示列表中的元素数目,同时表示列表末端的下一个可用位置。

  • 优势——

    • ①支持自动改变大小的功能(最大的优势);
    • ②利用泛型可以用于存储不同非基本类型的数据;
    • ③可以灵活的插入元素 ;
    • ④可以灵活的删除元素 。
  • 6.7使用链表实现列表

  • remove操作:remove操作是链表实现列表最重要的一步,该方法中提供的遍历整个列表的方法,为之后实现contains方法提供了帮助。

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

  • 问题1:教材上有一句话不是特别理解,表述引索列表和数组根本区别得时候出现得,
如果删除了一个元素,其他元素的位置会像"坍缩"了一样以消除产生的间隙。

这个坍缩的意思就很有意思了,是怎么坍缩来腾出位置嘞?

  • 解答:后面的元素会自动的补齐索引,就比如说排队的一列队伍,中间有人不愿意排下去了而离开队伍,后面的人就会向前补齐;其实是个很简单的概念,不知道为什么要用这么难懂的一个词。

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

  • 在实现pp6.7的时候,我运行测试类,发现所有的部分都是null或者0,这就奇了他的怪了,没有道理啊,我又回到我的ArrayList类里去查看我的方法,感觉是没什么问题的啊,就算是其他类错了,size方法也不应该得到0啊

  • 后来我随手点了debug,然后追根溯源,然后弹到了一个奇怪的方法上,原来我在写 ArrayOrderedList类的时候因为直接复制了我先打上去的书上的例题,声明的时候随手Alt+Enter就有了import week5.书上代码.jsjf.ArrayList;所以我的ArrayOrderedList类其实指向了那个什么方法都return null的例题类里面,真是强行降智。

代码托管

上周考试错题总结

  • Because queue operations modify both ends of the collection, fixing one end at index 0 eliminates the requirement that elements be shifted.

    • A .True
    • B .False
  • 正确答案: B 你的答案: A
  • 理解:当时没认真看题,书上的原话是因此将一端固定于引索0处要求移动元素,所以是错的。

结对及互评

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

    • 优点:代码编写时遇到的问题记录非常详细;对书本上的内容理解也到位
    • 缺点:没啥缺点,我觉得好的yipi。
  • 本周结对学习情况

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

国庆假期已经余额不足了,一号几乎在912花掉了一整天,5号开始就开始学习了,其实我觉得一直玩还挺无聊的,学习一下还是不错的感觉,但是一想到未来的半个月每天都要花两三个小时走队列,我就为自己的学习时间不足而感到恐惧。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 0/0 1/1 8/8
第二周 671/671 1/2 17/25
第三周 345/1016 1/3 15/40
第四周 405/1421 2/5 23/63

参考资料

2018-2019-20172321 《Java软件结构与数据结构》第四周学习总结的更多相关文章

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

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

  2. 20172321 2018-2019《Java软件结构与数据结构》第三周学习总结

    教材学习内容总结 第五章 5.1概述 队列是一种线性集合,其元素从一端加入,从另一端删除:队列的处理方式是先进先出(First in First out). 与栈的比较(LIFO) 栈是一端操作,先进 ...

  3. 20172302 《Java软件结构与数据结构》实验三:查找与排序实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月19日 必修/选修: 必修 实验内容 (1) ...

  4. 20172302 《Java软件结构与数据结构》实验二:树实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参 ...

  5. 20172302 《Java软件结构与数据结构》实验一:线性结构实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年9月26日 必修/选修: 必修 实验内容 (1)链 ...

  6. 20172301 《Java软件结构与数据结构》实验三报告

    20172301 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

  7. 20172301 《Java软件结构与数据结构》实验二报告

    20172301 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

  8. 20172329 2018-2019 《Java软件结构与数据结构》实验三报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

  9. 20172329 2018-2019-2 《Java软件结构与数据结构》实验二报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

  10. 20172301 《Java软件结构与数据结构》实验一报告

    20172301 <Java软件结构与数据结构>实验一报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

随机推荐

  1. colemak,你用了吗?

    为了输入代码的感觉更好,我学习了colemak键盘布局,这个布局它是在QWERTY的基础上改了10多个键. 开始的三天,感觉非常不好,每按一个键都要思考很长时间,干脆在网上找了个在线打字的网页去练,感 ...

  2. Leecode刷题之旅-C语言/python-326 3的幂

    /* * @lc app=leetcode.cn id=326 lang=c * * [326] 3的幂 * * https://leetcode-cn.com/problems/power-of-t ...

  3. 中国大学MOOC-JAVA学习(浙大翁恺)—— 温度转换

    import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto- ...

  4. Go类型特性-学习笔记

    1.组合 Go语言使用组合来完成类型的设计,设计某一类型时想要拥有其他类型的功能只需要将其他类型嵌入该类型即可. 2.接口 与其他语言不同的是,编译器会自动判断该类型是否符合某正在使用的接口,甚至不需 ...

  5. (数据科学学习手札51)用pymysql来操控MySQL数据库

    一.简介 pymysql是Python中专门用来操控MySQL数据库的模块,通过pymysql,可以编写简短的脚本来方便快捷地操控MySQL数据库,本文就将针对pymysql的基本功能进行介绍: 二. ...

  6. Python之路(四)--->list、元组、字典

    好久没有更新了,感觉自己写的东西并没有太多人看,可能是因为写的不好,也可能是太基础了.学习是一个漫长的过程,结果结果固然重要,但是更重要的是在学习的过程中所学到方法,这些方法在以后的生活还是工作中都能 ...

  7. Cache-Aside模式

    Cache-Aside 该模式是从数据仓库中将数据加载到缓存中,从而提高访问速度的一种模式.该模式可以有效的提高性能,同时也能一定程度上保证缓存中的数据和数据仓库中的数据的一致性,和同步数据到数据仓库 ...

  8. lnmp环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)

    安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc-c++ perl zlib-devel libaio libpng libpng-deve ...

  9. 【转载】Direct3D纹理映射

    原文:Direct3D纹理映射 更详细的文章:DirectX中的纹理映射相关技术 (转)   创建纹理对象 1: HRESULT CreateTexture( 2:   UINT Width,//宽度 ...

  10. 图论-最短路径 2.Dijkstra算法O (N2)

    2.Dijkstra算法O (N2) 用来计算从一个点到其他所有点的最短路径的算法,是一种单源最短路径算法.也就是说,只能计算起点只有一个的情况. Dijkstra的时间复杂度是O (N2),它不能处 ...