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就接近了。

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

参考资料

20175320 2018-2019-2 《Java程序设计》第8周学习总结的更多相关文章

  1. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. pythonのdjango CSRF简单使用

    一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...

  2. SQL Server - group by

    转载自https://segmentfault.com/a/1190000006821331 在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计 ...

  3. python中的赋值操作

    参考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(写的蛮好) python中的赋值操作“=” ...

  4. shell脚本的小记

    作者:邓聪聪 mysql的脚本执行 #!/bin/sh HOST="127.0.0.1" PORT=" UESRNAME="root" PASSWOR ...

  5. 帆软报表(finereport)动态列查询

    新建普通报表,新建一个数据集ds1,sql语句:select * from 销量 设计模板:选择复选按钮组控件 设置  控件名称 paraed , 控件值设置为公式:["列名",& ...

  6. C#常用的单元测试框架

    C#常用的单元测试框架有XUnit .NUnit .MSTest 做过单元测试的同学大概都知道以上几种测试框架,这几种框架除了标注测试类和方法的特性用的不一样之外,XUnit 和 NUnit 是非常相 ...

  7. django 实战篇之路由层

    路由层 如何给网页添加首页及尾页 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'test',views.test), url(r'te ...

  8. 配置php5.6.4 + Apache2.4.10

    一.下载并安装apache 下载地址:www.apachelounge.com 解压后:执行以下命令: #httpd.exe –k install #httpd.exe -k start 在执行过程中 ...

  9. 继承了AppCompatActivity的全屏设置

    v7下全屏设置:getSupportActionBar().hide();getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN ...

  10. github使用的小坑 处理

    1.本地版本 低于线上版本,并做了修改 ,线上版本也做了修改的情况下,提交内容,必须解决冲突 会出现 解决方法 冲突的几个文件 进行初始还原 在进行 更新 与线上同步,在将需要提交的/新增/修改的内容 ...