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

教材学习内容总结

本周学习了教材的第十五章的内容,在这章中介绍了泛型和集合框架,着重讲了泛型类的概念,并介绍了如何使用泛型类实现链表链表、顺序表、堆栈、散列映射、树集以及树映射等数据结构。

泛型类

  • 1、泛型类是在JDK1.5中推出的,其主要目的是可以建立具有类型安全的集合框架。可以使用“class 名称”声明一个泛型类,泛型列表中可以是任何接口或对象,但不能是基本数据类型。泛型类声明时,“泛型列表”给出的泛型可以作为类的成员变量的类型、方法的类型以及局部变量的类型。
  • 2、泛型类声明和创建对象时,类名后多了一对“<>”,而且必须要用具体的类型替换“<>”中的泛型。泛型类中的泛型变量bottom只能调用Object类中的方法。
  • 3、使用泛型类建立的数据结构时,不必进行强制类型转换,在运行时不要求进行类型检查,使代码更安全。

链表

链表是由若干个称作结点的对象组成的一种数据结构,在java中使用LinkedList泛型类来创建以链表结构存储数据的对象。

  • 1、LinkedList类创建的对象为链表对象,例如:LinkedList mylist=new LinkedList(),其中必须要指定E的具体类型。
  • 2、链表使用add方法等常用方法对进行操作结点。
  • 3、结点是自动链接在一起的。
  • 4、可以把LinkList对象的引用赋值给Collection接口变量或List接口变量,接口就可以调用类实现的接口方法。
  • 5、链表对象可以使用iterator()方法获取一个Iterator对象,该对象就是针对当前链表的迭代器。
  • 6、java也提供了顺序结构的动态数组表类ArrayList,数组表不适合动态地改变它存储的数据,但数组表获得第n个单元中的数据的速度要比链表获得第n个单元中的数据快。
  • 7、链表使用Collection类中的类方法sort()以及binarySearch()方法来进行排序和查找,而在使用排序和查找的方法前必须要在创建对象的类中实现Comparable接口。
  • 8、而通过Collection类我们还可以将链表中的数据重新随机排列以及旋转。

堆栈

堆栈是一种“先进后出”的数据结构,只能在一端进行输入或输出数据的操作。

  • 1、使用Stack泛型类创建一个堆栈对象。
  • 2、使用push、pop、empty、peek、search等方法对栈进行操作或查看栈的状态。

散列映射

HashMap<K,V>泛型类对象采用散列表这种数据结构存储数据,其对象的创建过程与链表类似,对象可以存储键/值对数据。

  • 1、可以使用put、clear、clone等方法对散列进行操作。
  • 2、将values方法返回一个实现Colletion接口类创建的对象,可以使用接口回调技术,即将该对象的引用赋值给Collection接口变量,该接口变量可以回调iterator()方法获取一个Itertaor对象,这个Iterator对象存放散列映射中所有键/值对中的值。

树集

TreeSet泛型类对象采用树集这种数据结构存储数据,其对象的创建过程与链表类似。

  • 1、在树集中,同一层中的结点从左到右按:大小顺序递增,从上到下递增。
  • 2、在插入树集的结点前要在创建对象的类中实现Comparable接口。
  • 3、树映射是一种特殊的树,树映射的结点存储关键字/值对。

自动装箱与拆箱

JDK1.5后程序允许把一个基本的数据类型添加到类似链表等数据结构中。

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

本周的学习内容较少,且是在Java中实现简单的数据结构,在学习过程中没有较大的问题。

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

  • 问题1:编译程序时显示使用了不安全的操作。
  • 问题1解决方法:使用javac -Xlint:deprecation Example8_20.java命令对代码进行编译,发现是add(E)的调用未经检查,但实际上这是由于JDK1.5后的编译器会在使用旧版本的LinkedList类时给出警告信息,忽略该信息直接运行即可。
  • 问题2:编译书上第六个例子时显示已过时。
  • 问题2解决方法:同上忽略掉该信息直接运行即可

代码托管

上周考试错题总结

  • 错题1:\b\w{6}\b 匹配刚好6个字符的单词。
  • 错题2:忽略了数组下标与数组内数据的关系,args[0]中才是第一个数。

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

本周的内容虽然不多但是十分重要,在任何许多编程语言中数据结构都是十分重要的,尤其是链表、散列映射以及树集。在熟悉本章内容时我们可以结合数据结构这门课程的相关知识来加深我们的映像。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第七周 1094/7487 2/13 30/182

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

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

参考资料

最新文章

  1. sweetAlert
  2. [系统开发] 基于Ansible的产品上线系统
  3. TensorFlow中max pooling层各参数的意义
  4. Bugtags 与其它产品的区别
  5. Android之TextView文字绘制流程
  6. javascript宿主对象之window.navigator
  7. iOS 完美解决 interactivePopGestureRecognizer 卡住的问题
  8. HTML5-WebSocket技术学习(2)
  9. Hadoop2.6.0完全分布式安装
  10. 每天学一点-Jquery判断checkbox是否为选中状态
  11. 【转】Spring的WebServiceTemplate访问WebService的方法及其本质原理
  12. Android(java)学习笔记152:Android运行时异常“Binary XML file line # : Error inflating class”
  13. 自定义滚轮效果选择器spinnerwheel的使用总结
  14. sgu To xor or not to xor
  15. 从零开始Unity3D游戏开发【2 简单的水管工例子】
  16. JAVA中List、Map、Set的区别与选用
  17. JEECG移动解决方案 - 针对移动应用的应用系统转换的中间件解决方案
  18. NYOJ--65--另一种阶乘问题
  19. Qt日常备注(函数/接口实现)
  20. 201521123055 《Java程序设计》第14周学习总结

热门文章

  1. JAVA进阶7
  2. eclipse+tomcat出现警告警告: [SetPropertiesRule]...
  3. 剑指Offer编程题1——二维数组中的查找
  4. elk搭建日志系统
  5. 「luogu3258」[JLOI2014] 松鼠的新家
  6. Java基础10-集合
  7. Windows密钥容器和证书的关系
  8. Fiddler模拟自动响应数据
  9. centos6.8_manul_install_oracle112040&amp;manu_create_db
  10. RDay2-Problem 2 B