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. opensuse 使用xx-net

    提示安装 [launcher][WARNING] import pynotify fail, please install python-notify if possible. gae_proxy][ ...

  2. django drf 基础学习2

    DRF基本程序调用一 models初步编写  1 编写model.py    from django.db import models 导入    class dbinfo(models.Model) ...

  3. monkey测试 -- 原理和操作步骤

     Monkey测试原理: Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序 ...

  4. 用可配置外部工具的编辑器编译与执行java

    用可配置外部工具的编辑器编译与执行java 最近用了everedit.觉得比之前平时用的Editplus有更多的细节与功能要好许多. 这里就写写用everedit编译与执行java的方法. 原理 ja ...

  5. 在deepin 15.5中安装vs code并配置c/c++环境

    原文地址:https://blog.csdn.net/DefetC/article/details/79946100 参考了以下几篇文章: https://www.zhihu.com/question ...

  6. web页面实现文件下载的几种方法

    今天碰到文件下载的一些问题,本着知其然也要知其所以然的精神,站在巨人的肩膀上深入学习和测试了一下,抛砖引玉,现在总结结论如下: 1)标准URL下载方式可以通过在web页面中嵌入 url超级链接,标准的 ...

  7. Linux extmail的邮件服务器搭建

    注:本文来源于<extmail搭建> 一.背景介绍 ExtMail Solution 是一个基于优秀开源软件的电子邮件系统解决方案,核心部件包括了Postfix.Amavisd-new.C ...

  8. 七天开发进度(七)(微信小程序版(二)记账本)

    终于把小程序版弄完了,不过这并不能称之为是我的作品,因为我还没有彻底学会小程序,对JavaScript语言还有很多不会的地方,没有掌握, 这次的程序是通过学习网上的多个教程,多个案例结合拼凑模仿者人家 ...

  9. 主席树入门——询问区间第k大pos2104,询问区间<=k的元素个数hdu4417

    poj2104找了个板子..,但是各种IO还可以进行优化 /* 找区间[l,r]第k大的数 */ #include<iostream> #include<cstring> #i ...

  10. day19模块1

    http://www.cnblogs.com/Eva-J/articles/7228075.html#_label10 collections模块: 在内置数据类型(dict.list.set.tup ...