20175227张雪莹 2018-2019-2 《Java程序设计》第八周学习总结
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程序设计》第八周学习总结的更多相关文章
- 201521123027 <java程序设计>第八周学习总结
1.本周学习总结 1.1思维导图 2.书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进 ...
- 2018-2019-2 20175227张雪莹《Java程序设计》实验三 《敏捷开发与XP实践》
2018-2019-2 20175227张雪莹<Java程序设计> 实验三 <敏捷开发与XP实践> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号: ...
- 2018-2019-2 20175227张雪莹《Java程序设计》 实验二《Java面向对象程序设计》
2018-2019-2 20175227张雪莹<Java程序设计> 实验二<Java面向对象程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...
- 2018-2019-2 20175227张雪莹 《Java程序设计》 实验一 Java开发环境的熟悉
2018-2019-2 20175227张雪莹<Java程序设计> 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:2017 ...
- 2018-2019-2 20175227张雪莹《Java程序设计》实验五 《网络编程与安全》
2018-2019-2 20175227张雪莹<Java程序设计> 实验五 <网络编程与安全> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:20 ...
- 2018-2019-2 20175227张雪莹《Java程序设计》实验四 《Android程序设计》
2018-2019-2 20175227张雪莹<Java程序设计> 实验四 <Android程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第六周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第六周学习总结 教材学习内容总结 第七章 内部类与异常类 内部类:在一个类中定义另一个类:包含内部类的类为外嵌类 内部类 ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第五周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第五周学习总结 教材学习内容总结 第六章接口与实现 接口 接口体中所有的常量访问权限一定是public和static(可 ...
随机推荐
- iframe嵌套vue页面打开新窗口
iframe嵌套vue页面时目录结构为下图: 此时出口文件指向index.html, 所以只需要用a标签动态拼接href, 并设置属性 target="_blank" ,即可在if ...
- ENVI5.3 影像重采样 和 tiff 保存
输入---之前用envi4.5处理后的2013分类影像---输出重采样的影像 直接在工具栏搜索 resize data---出来对话框, 这里有几种方法----sample line 指的行列号,可以 ...
- 团队合作one
一.项目介绍 为生活在长大的学生提供方快捷的生活服务,通过帖子发现自己志同道合的朋友,记录自己在长大点滴.本项目的意义在于锻炼团队的scrum能力,加强团队合作能力.确定本项目采用的技术方向:本项目整 ...
- php 浏览记录功能
/** * 历史浏览记录 * $data array 浏览记录里作品的必要信息 */ private function _history($data){ if(!$data || !is_array( ...
- php 调用接口
1.一般常用方法 file_get_contents(): 今天调用了一个反人类的接口,接口是get方式传输,里面有一个参数是当前时间,没错,不是时间戳,是当前格式化的时间:2017-8-9 11:1 ...
- UGUI学习——Canvas基础组件
UGUI的分辨率自适应的机制 UGUI中,Canvas(画布)可以看成电脑屏幕,其功能和属性都是一样的.游戏中的分辨率自适应主要包括两部分: 1. 缩放适应:是在不同尺寸的屏幕下,整体缩放比例的计算方 ...
- ngix请求转发
实际运用中,当我们有对用户隐藏真实url的需求时,可以使用ngix转发. 1.转发所有请求: location / { proxy_pass http://localhost:8080 ; } 2.转 ...
- 【软件安装与环境配置】ubuntu16.04+caffe+nvidia+CUDA+cuDNN安装配置
前言 博主想使用caffe框架进行深度学习相关网络的训练和测试,刚开始做,特此记录学习过程. 环境配置方面,博主以为最容易卡壳的是GPU的NVIDIA驱动的安装和CUDA的安装,前者尝试的都要吐了,可 ...
- zznuoj 1540 : 直线与圆
题目描述 给出一个圆的圆心坐标与圆的半径,和一条直线上的两点坐标,求这条直线与圆有多少个交点. 输入 输入3个实数x,y,r值分别表示圆心坐标与圆的半径,输入4个实数x1,y1,x2,y2表示直线上的 ...
- python_ 基本语法
一.基础知识: 1.鸡汤 摘抄至 :简明 python 教程 在人生中取得成功,与其说靠天才与机会,不如说靠专注与毅力! Python 特点:简单.易于学习(简单得语法体系).自由且开发.高级语言.跨 ...