20175322 周弋鸿 2018-2019-2 《Java程序设计》第八周学习总结

教材学习内容总结

泛型类

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

    链表

  • 链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用
  • 在java中使用LinkedList泛型类来创建以链表结构存储数据的对象
  • 链表使用add方法等常用方法对进行操作结点
  • 结点是自动链接在一起的
  • 链表对象可以使用iterator()方法获取一个Iterator对象,该对象就是针对当前链表的迭代器
  • java也提供了顺序结构的动态数组表类ArrayList,数组表不适合动态地改变它存储的数据,但数组表获得第n个单元中的数据的速度要比链表获得第n个单元中的数据快
  • 而通过Collection类我们还可以将链表中的数据重新随机排列以及旋转

    LinkedList泛型类

  • LinkedList泛型类创建的对象以链表结构存储数据,习惯上称LinkedList类创建的对象为链表对象
  • 常用方法:
    • LinkedList<E>泛型类实现Lis<E>泛型接口中的一些常用方法:
    public boolean add(E element) //向链表末尾添加一个新的节点,该节点中的数据是参数elememt指定的数据。
    public void add(int index ,E element)// 向链表的指定位置添加一个新的节点,该节点中的数据是参数elememt指定的数据。
    public void clear()// 删除链表的所有节点,使当前链表成为空链表。
    public E remove(int index) //删除指定位置上的节点。
    public boolean remove(E element)// 删除首次出现含有数据elemen的节点。
    public E get(int index) //得到链表中指定位置处节点中的数据。
    • LinkedList<E>泛型类本身新增加的一些常用方法:
    public void addFirst(E element) //向链表的头添加新节点,该节点中的数据是参数elememt指定的数据。
    public void addLast(E element)// 向链表的末尾添加新节点,该节点中的数据是参数elememt指定的数据。
    public E getFirst() //得到链表中第一个节点中的数据。
    public E getLast() //得到链表中最后一个节点中的数据。
    public E removeFirst() //删除第一个节点,并返回这个节点中的数据。

    洗牌与旋转

  • Collections类还提供了将链表中的数据重新随机排列的类方法以及旋转链表中数据的类方法:
public static void shuffle(List<E> list)// 将list中的数据按洗牌算法重新随机排列。
static void rotate(List<E> list, int distance) //旋转链表中的数据。
public static void reverse(List<E> list) //翻转list中的数据。

堆栈

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

    • 使用Stack泛型类创建一个堆栈对象
    • 使用push、pop、empty、peek、search等方法对栈进行操作或查看栈的状态
    tack<E>//泛型类创建一个堆栈对象,堆栈对象常用方法
    public E push(E item);//实现压栈操作
    public E pop();//实现弹栈操作
    public boolean empty();//判断堆栈是否还有数据
    public E peek();//获取堆栈顶端的数据,但不删除该数据
    public int search(Object data);//获取数据在堆栈中的位置

    散列映射

  • HashMap<K,V>对象采用散列表这种数据结构存储数据,习惯上称HashMap<K,V>对象为散列映射
    • 可以使用put、clear、clone等方法对散列进行操作
    • 将values方法返回一个实现Colletion接口类创建的对象,可以使用接口回调技术,即将该对象的引用赋值给Collection接口变量,该接口变量可以回调iterator()方法获取一个Itertaor对象,这个Iterator对象存放散列映射中所有键/值对中的值
  • 常用方法:
public void clear()// 清空散列映射
public Object clone()// 返回当前散列映射的一个克隆
public boolean containsKey(Object key)// 如果散列映射有“键/值”对使用了参数指定的键,方法返回true,否则返回false
public boolean containsValue(Object value)// 如果散列映射有“键/值”对的值是参数指定的值
public V get(Object key)// 返回散列映射中使用key做键的“键/值”对中的值
public boolean isEmpty() //如果散列映射不含任何“键/值”对,方法返回true,否则返回false
public V remove(Object key)// 删除散列映射中键为参数指定的“键/值”对,并返回键对应的值
public int size() //返回散列映射的大小,即散列映射中“键/值”对的数目

树集

  • TreeSet类创建的对象称作树集

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

      自动装箱与拆箱

  • 自动装箱:程序允许把一个基本数据类型添加到类似链表等数据结构中,系统会自动完成基本类型到相应对象的转换
  • 自动拆箱:即自动装箱逆过程

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

  • 本周学习Java过程中未遇到较大问题

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

  • 问题1:编译程序时显示使用了不安全的操作。
  • 问题1解决方案:书上已经说明这是由于JDK1.5后的编译器会在使用旧版本的LinkedList类时给出警告信息,忽略该信息直接运行即可。使用javac -Xlint:unchecked Example15_4.java命令对代码进行编译

代码托管

感悟

  • 第十五章内容偏少,但其中的内容十分重要,尤其是链表、散列映射以及树集等
  • 我们需要多结合之前学过的知识来加深对这章内容的理解

参考资料

  • Java学习笔记(第8版)

  • 《Java学习笔记(第8版)》学习指导

转载于:https://www.cnblogs.com/zyh5322/p/10744934.html

20175322 周弋鸿 2018-2019-2 《Java程序设计》第八周学习总结相关推荐

  1. 20175317 《Java程序设计》第一周学习总结

    20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...

  2. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  3. 20172318 2016-2017-2 《Java程序设计》第一周学习总结

    20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一 ...

  4. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

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

    20175208 2018-2019-2 <Java程序设计>第九周学习总结 一.教材学习内容总结: 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系 ...

  6. 20175204 张湲祯 2018-2019-2《Java程序设计》第九周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第九周学习总结 教材学习内容总结 -第十一章JDBC和MySQL数据库要点: 1.下载MySQL和客户端管理工具navi ...

  7. 20155313 2016-2017-2 《Java程序设计》第二周学习总结

    20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...

  8. 20155226 2016-2017-2 《Java程序设计》第一周学习总结

    20155226 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 第一周主要学习了一二章的内容,也浏览了剩余章节,以下是本周主要学习内容总结 1.首先了解了[ ...

  9. 20172325 2018-2019-1 《Java程序设计》第二周学习总结

    20172325 2018-2019-1 <Java程序设计>第二周学习总结 教材学习内容总结 3.1集合 集合是一种聚集.组织了其他对象的对象.集合可以分为两大类:线性集合和非线性集合. ...

  10. 张旭升20162329 2006-2007-2 《Java程序设计》第一周学习总结

    20162329 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 通过打书上的代码熟悉了Java编程的基本过程 教材学习中的问题和解决过程 1.因为我的虚拟机 ...

最新文章

  1. CSDN送会员?免费的!都来领!
  2. ubuntu时区设置
  3. Android移动开发之【Android实战项目】DAY6-安卓多线程
  4. Ubuntu最简单的方式安装NVIDIA显卡驱动和cuda工具
  5. 深度探索C++ 对象模型(5)-Initialization list(2)
  6. XML中的CDATA是什么
  7. Win XP系统的开机菜单具体含义
  8. 【Linux】一步一步学Linux——atrm命令(140)
  9. 音视频技术开发——还有什么不能讲的?
  10. Oauth 2.0概述
  11. 容器编排技术 -- Google Computer Engine入门
  12. python调用函数获取最开始的异常_Python使用sys.exc_info()方法获取异常信息
  13. 多线程Socket传送文件的客户端和服务端源代码
  14. Welcome to Xiao
  15. Ubuntu14.04安装wineqq国际版
  16. 数字图像处理——大家来找茬(Python)
  17. 大鱼吃小鱼算法java,瞬间高大上了!
  18. 英语商务对话和英语商务谈判技巧
  19. 数字集成电路设计-1-用一个mux和一个inv实现异或
  20. 南怀瑾:“心静出贵人”,中年后这三个地方静,一切都会越来越顺!

热门文章

  1. 某一天,忽然发现自己坚持不下去了。(无关计算机,只是一些自己的困惑和感想)
  2. HDOJ--1863--畅通工程
  3. C# 两个datatable中的数据快速比较返回交集或差集
  4. fasfdfs安装记录(CentOS7)
  5. 初识Git-GitHub
  6. 《Spark大数据分析实战》——第2章Spark开发与环境配置
  7. iOS中使用SFHFKeychainUtils保存用户密码
  8. word打开提示“所用加密类型不可用”
  9. IE下javascript cookie path
  10. java反射代码,java反射