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. vue安装scss,并且全局引入

    在写vue的css样式时,觉得需要css预处理器让自己的css更加简洁.适应性更强.可读性更佳,更易于代码的维护,于是在vue-cli脚手架采用scss.写过的人都知道,每写一个.vue文件都要在st ...

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

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

  3. JavaWeb - Apache与Tomcat有什么关系和区别

    总结: 1- apache是web服务器,侧重于http server: tomcat是应用(java)服务器,侧重于servlet引擎 2-合作过程详解,请看:JavaWeb - apache和to ...

  4. day01 进制转换与内存分布

    今日重点: 1.进制之间的转换 进制:指的是进位的制度.进制主要有二进制.八进制.十六进制等,计算机底层运用的是二进制,为了方便阅读,通常会使用八进制或十六进制进行表示.在32位系统中,通常使用八进制 ...

  5. IDEA 在同一目录创建多个项目

    以往的Eclipse.NetBeans等开发工具不同,IDEA的Project相当与Eclipse的Workspace,而Module相当于Project. 下边就给出Eclipse与IDEA的概念的 ...

  6. 使用mysqlslap进行MySQL压力测试

    使用mysqlslap进行MySQL压力测试发表于236 天前 ? MySQL ? 暂无评论 MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来 ...

  7. excel数据导入mysql

    先把excel数据另存成txt文件 Load Data InFile 'D:/1.txt' Into Table `res_type_collect` fields terminated by '@‘ ...

  8. UOJ#460. 新年的拯救计划 构造

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ460.html 题解 本题的构造方法很多.这里只介绍一种. 首先,总边数为 $\frac{n(n-1)}2 ...

  9. 前后台得到WEB应用的名称

    前台得到当前应用的名称: ${ pageContext.request.contextPath } 后台得到当前应用的名称: request.getServletContext().getContex ...

  10. 项目之初的模型设计与status状态字段

    0X01 开始做一个app的时候,要先做的是流程设计与数据库模型设计. 但做的模型设计往往是设置字段满足当前的需求,缺乏足够的经验,即使为以后的功能预留出位置,也无法考虑周全. 比如,刚开始做用户表, ...