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. 程序通过ReportViewer对象来调用reporting services并导出pdf文件

    ReportViewer tempReportViewer = new ReportViewer(); tempReportViewer.ProcessingMode = ProcessingMode ...

  2. 【JS】长轮询

    循环请求服务器数据 function send () { xhr.open('GET', '/clock', true); xhr.onreadystatechange = function () { ...

  3. pyhon 模块 IP/端口 扫描

    用到了python-nmap模块(注意是 python-nmap模块 不是nmap模块 且不要安装nmap模块!!!!) windows 中还需要下载一个 nmap 软件: 下载地址: https:/ ...

  4. 网络学习day04_VLSM、子网划分

    IP子网划分 首先,在进行子网划分的学习之前,我们先来回顾一下IP地址的相关知识,同时了解一下公有和私有IP地址: 在Internet上有千百万台主机,为了区分这些主机,人们给每台主机都分配了一个专门 ...

  5. shim和polyfill

    shim是将新的api引入旧的环境 polyfill是一段代码或插件 https://www.aliyun.com/jiaocheng/773254.html 理解得不够透彻...

  6. Active information gathering-services enumeration

    1.Summaize the book  Practical  Web Penetration Testing first  nmap tools is important for gather in ...

  7. jfinal undertow web.xml

    由于 undertow 是为嵌入式 server 而生,所以 jfinal undertow 项目是不需要 web.xml 这个文件的 线上这版 Filter.Servelt.Listener.Web ...

  8. vs 2012 更新update4 后出现问题

    Could not load file or assembly 'file:///C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7 ...

  9. [原创]c# 岛2 小辅助~~~ 钓鱼 连击

  10. Pok 使用指南

    Pok 使用指南 POK 是一个开源的符合ARINC653的操作系统,因为一些原因,我要开始接触一个全新的领域,再此希望记录下每天点滴进步,同时也欢迎指正吧. 目前先简单说明POK的使用指南 获取源码 ...