20175227张雪莹 2018-2019-2 《Java程序设计》第八周学习总结

教材学习内容总结

第十五章 泛型与集合框架

  • 泛型:主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。

    • 可以声明为: class People<E>
    • E是其中的泛型,可以是任何对象或接口,但不能是基本类型数据。
    • 使用泛型类声明对象
      • 泛型类声明和创建对象时,类名后多了一对“<>”,而且必须要用具体的类型替换“<>”中的泛型。例如:

        • Cone<Circle> coneOne;
        • coneOne =new Cone<Circle>(new Circle());
  • 链表:由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用 。

    • LinkedList<E>泛型类:创建的对象以链表结构存储数据,习惯上称LinkedList类创建的对象为链表对象。例如:

      • LinkedList<String> mylist=new LinkedList<String>();
    • 遍历链表
      • 当用户需要遍历集合中的对象时,应当使用该集合提供的迭代器,而不是让集合本身来遍历其中的对象。
      • 链表对象可以使用iterator()方法获取一个Iterator对象,该对象就是针对当前链表的迭代器。
  • 排序与查找

    • Collections类提供的用于排序和查找的类方法如下:

      • public static sort(List<E> list) 该方法可以将list中的元素升序排列。
      • int binarySearch(List<T> list, T key,CompareTo<T> c) 使用折半法查找list是否含有和参数key相等的元素,如果key链表中某个元素相等,方法返回和key相等的元素在链表中的索引位置(链表的索引位置从0考试),否则返回-1。
  • 洗牌与旋转

    • 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<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>对象为散列映射。
    • 该泛型类实现了泛型接口Map<K,V>,可以用接口回调技术,那么接口变量就可以调用类实现的接口方法。
  • 树集

    • TreeSet<E>泛型类:适合用于数据的排序

      • 例如:

        • TreeSet<String> mytree=new TreeSe<String>();
      • 然后使用add方法为树集添加节点,例如:
        • mytree.add("boy");
    • 树映射
      • TreeMap<K,V>类实现了Map<K,V>接口,称TreeMap<K,V>对象为树映射。
      • 树映射的结点存储关键字/值对。
  • 自动装箱与拆箱

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

      • 例如:
ArrayList<Integer> list=new ArrayList<Integer>();
for(int i=0;i<10;i++) {
list.add(i); //自动装箱,实际添加到list中的是new Integer(i)。
}

该段程序中的list.add(i);等价于List.add(new Integer(i));

  • 自动拆箱:即自动装箱逆过程。

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

  • 问题1:在学习书上P446例子2代码时,不明白以下代码中泛型类List为何创建对象为LinkList

    List<String> list=new LinkedList<String>();
  • 问题1解决方案:

    在书上P445上方找到了答案:“LinkedList泛型类中的绝大部分方法都是泛型接口方法的实现。编程时,可以使用接口回调技术,即把LinkedList<E>对象的引用赋值给Collection<E>接口变量或List<E>接口变量,接口就可以调用类实现的接口方法。”
  • 问题2:不是很理解如书上例子5、6中遍历每个链表中或栈中的元素时,总是用Integer建立对象来作为输出媒介。
  • 问题2解决方法:通过查阅API得知:Integer类的作用,以及两个泛型类都是用的Integer类做的泛型,以实现元素的整型数据类型输出。
  • 问题3:不清楚书上P458上例子9如下代码的作用
for(int k=0;k<student.length;k++)
treemap.put(key[k],student[k]);
  • 问题3解决方法:通过查询API,找到了put方法作用,如下图所示:

我理解的意思是:关键字和值本无关系,通过put方法将二者联系起来

  • 问题4:书上15.7中讲解代码时说程序中的list.add(i);等价于List.add(new Integer(i));为了进一步学习,我将该代码改为注释中提示的形式

  • 问题4解决方法:程序正常编译、运行。

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

  • 问题1:编译例子6时出现以下问题,如图:

  • 问题1解决方案:在对stack的第一次压栈时,调用push方法括号里是对Integer类重新定义对象,修改程序后正常编译运行:

代码托管

上周考试错题总结

结对及互评

  • 博客中值得学习的或问题:

  • 该同学教材学习情况总结精炼,有自己的侧重点

  • 忘记写感悟了

  • 代码中值得学习的或问题:

  • 基于评分标准,我给本博客打分:10分。得分情况如下:正确使用Markdown语法(加1分);模板中的要素齐全(加1分);教材学习中的问题和解决过程, 一个问题加1分;代码调试中的问题和解决过程, 一个问题加1分;本周有效代码超过300分行的(加2分);排版精美的加一分;代码Commit Message规范的加1分;点评认真,能指出博客和代码中的问题的加1分;结对学习情况真实可信的加1分

点评过的同学博客和代码

其他(感悟、思考等,可选)

  • 本周学习内容:链表、树集等泛型类,更好的将多元结构数据进行存储和下一步操作;其实这个和我们另一门课程数据结构和算法有很强的关联性。通过java语言中链表、树集与C语言实现方式的比较,更好的看出了Java语言的优势:排序、删除、加入等操作都无需自己编程,直接调用方法即可。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
第一周 11/11 1/1
第二周 262/273 1/2
第三周 642/915 1/3
第四周 384/1299 2/5
第五周 661/1960 1/6
第六周 1031/2991 2/8
第七周 123/3114 2/10
第八周 941/4055 2/12

参考资料

  • [Java2实用教程(第5版)]

20175227张雪莹 2018-2019-2 《Java程序设计》第八周学习总结的更多相关文章

  1. 201521123027 <java程序设计>第八周学习总结

    1.本周学习总结 1.1思维导图 2.书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进 ...

  2. 2018-2019-2 20175227张雪莹《Java程序设计》实验三 《敏捷开发与XP实践》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验三 <敏捷开发与XP实践> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号: ...

  3. 2018-2019-2 20175227张雪莹《Java程序设计》 实验二《Java面向对象程序设计》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验二<Java面向对象程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...

  4. 2018-2019-2 20175227张雪莹 《Java程序设计》 实验一 Java开发环境的熟悉

    2018-2019-2 20175227张雪莹<Java程序设计> 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:2017 ...

  5. 2018-2019-2 20175227张雪莹《Java程序设计》实验五 《网络编程与安全》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验五 <网络编程与安全> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:20 ...

  6. 2018-2019-2 20175227张雪莹《Java程序设计》实验四 《Android程序设计》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验四 <Android程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...

  7. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

  8. 20175227张雪莹 2018-2019-2 《Java程序设计》第六周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第六周学习总结 教材学习内容总结 第七章 内部类与异常类 内部类:在一个类中定义另一个类:包含内部类的类为外嵌类 内部类 ...

  9. 20175227张雪莹 2018-2019-2 《Java程序设计》第五周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第五周学习总结 教材学习内容总结 第六章接口与实现 接口 接口体中所有的常量访问权限一定是public和static(可 ...

随机推荐

  1. Fescar: Fast & Easy Commit And Rollback

    Fescar is an easy-to-use, high-performance, java based, open source distributed transaction solution ...

  2. 树莓派安装tensorflow1.11

    树莓派3B+ 环境:2018-11-13-raspbian-stretch 初始状态 首先将本地更新一下和安装 sudo apt-get update sudo apt-get upgrade 然后更 ...

  3. Problem: 棋盘小游戏(一道有意思的acm入门题

    Problem Description 现有一个2行13列的棋盘,棋盘上的任意一个位置可以向他临近的8个位置移动.棋盘上的每一个位置的标号由一个大写的英文字母表示.现在给你一个移动的顺序,问你如何设置 ...

  4. java生成jar并用ikvm生成dll供C#调用

    最近想尝试用C#做NB_IOT北向API接口的访问.北向API的接口的访问需要证书的双向认证,而C#不支持双向认证,所以就使用IKVM在C#中跑JAVA程序实现HTTPS请求部分. 步骤如下: 一.使 ...

  5. 前端开发:一个开源、简单易用的jQuery表格插件(DataTables)

    DataTables是一个基于jQuery库的开源(MIT协议)表格插件,支持添加.排序.分页.搜索.过滤等功能,使用简单.广受欢迎,能够与主流前端UI整合(如bootstrap.jQuery UI等 ...

  6. 【转载】tolua之wrap文件的原理与使用

    什么是wrap文件 每个wrap文件都是对一个c#类的包装,在lua中,通过对wrap类中的函数调用,间接的对c#实例进行操作. wrap类文件生成和使用的总体流程 生成一个wrap文件的流程 这部分 ...

  7. Mawawa CSS 学习之旅 Display

    CSS 类型之 Display 更新时间: 2018-2-10: 一个良好的布局结构从 display 开始! 分类:外部值.内部值.列表值.属性值.混合值.显示值.全局值: 一.外部值 作用:主要用 ...

  8. SpringBoot打成jar包后,获取不到读取resources目录下文件路径的问题

    问题描述: Springboot没有打成jar之前,可以成功获取读取resources目录下xxx.json文件的 路径.但是打成jar包后,接口调不通,原因是获取不到文件的路径. 原因: 在本地进行 ...

  9. PTA2

    一.题目:7-1 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成“贰万叁仟壹百零捌”元.为了简化输出,用 ...

  10. unity 面试题(答案)

    一.什么是渲染管道?是指在显示器上为了显示出图像而经过的一系列必要操作.渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去.主要步骤有:本地坐标->视图坐标->背面裁 ...