201621123023《Java程序设计》第8周学习总结
一.本周学习总结

二.书面作业
1. ArrayList代码分析
1.1 解释ArrayList的
contains源代码
由图可知,传入参数后调用
indexOf函数来判断是否存在,会循环整个elementData数组来与传入的字符或者null进行比较,存在则返回在数组中的下标,不存在则返回-1。1.2 解释
E remove(int index)源代码
rangeCheck是用来判断是否越界;modCount初始为0然后自加,是用来记数;numMoved是数组中在要删除元素后还有元素的个数,如果大于0则将后面的全部向前移动一位(arraycopy来实现),然后数组大小减一。1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的具体类型吗?
不用,因为在源码中设定的存储类型为
Object,他是超级父类,因而能存任何类型的元素。1.4 分析add源代码,回答当内部数组容量不够时,怎么办?

当内部数组容量不够时就会执行上图中的代码,使得数组的容量变为原来的1.5倍。
1.5 分析
private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?因为这个方法只是用来判断下标是否越界而已,不必被外部类访问,就没必要申明为
public了。
2. HashSet原理
2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?
会先对元素进行
hashCode的计算,根据得到的结果将其放入对于的桶中,在桶中会使用equals依次往后进行判断元素是否存在,不存在则加到最后。2.2 将元素加入HashSet中的时间复杂度是多少?是O(n)吗?(n为HashSet中已有元素个数)
时间复杂度应该为O(1),因为只需要计算元素本身的hashCode然后与与之相同的桶中元素比较即可。
3. ArrayListIntegerStack
题集jmu-Java-05-集合之ArrayListIntegerStack
3.1 比较自己写的ArrayListIntegerStack与自己在题集
jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)
两种代码的实现方法不同,上图中第一个用的是定长数组以及一个变量来记录下标;第二个用的是动态数组并且可以使用自带的一些方法。
3.2 结合该题简单描述接口的好处,需以3.1为例详细说明,不可泛泛而谈。
上题中的两种代码他们的接口定义的都是一样的,不一样的就如第一题所说的实现方法,这就体现了接口的好处了。同样的接口,继承他的类可以有不同的实现方法,来达到相同的目的,一旦某个实现方法受到限制,可以很灵活的改变代码。
4. Stack and Queue
4.1 编写函数判断一个给定字符串是否是回文,一定要使用栈(请利用Java集合中已有的类),但不能使用java的
Stack类(具体原因自己搜索)与数组。请粘贴你的代码,类名为Main你的学号。

4.2 题集
jmu-Java-05-集合之银行业务队列简单模拟(只粘贴关键代码)。请务必使用Queue接口,并说明你使用了Queue接口的哪一个实现类?
使用了
LinkedList实现类。
5. 统计文字中的单词数量并按单词的字母顺序排序后输出
题集jmu-Java-05-集合之5-2 统计文字中的单词数量并按单词的字母顺序排序后输出 (作业中不要出现大段代码)
5.1 实验总结

使用
TreeSet,使得按字母顺序排列。
6. 选做:统计文字中的单词数量并按出现次数排序
题集jmu-Java-05-集合之5-3 统计文字中的单词数量并按出现次数排序(不要出现大段代码)
6.1 伪代码


6.2 实验总结
因为有单词又有各自的数量,所以用
TreeMap来存储和排序。之前使用数组(直接定义很大)来进行存储,可以运行但是PTA上超时了。存储完直接输出的话是按照键的顺序来排的不符合题目要求,jdk文档上有介绍用Comparator,但是这里的键值对是String和Integer两种,好像用不了,百度到的方法是将其转化为List再比较,结果就可以了。
三.码云及PTA
3.1. 码云代码提交记录

3.2 截图PTA题集完成情况图


3.3 统计本周完成的代码量

| 周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
|---|---|---|---|---|
| 1 | 193 | 193 | 6 | 6 |
| 2 | 625 | 432 | 35 | 29 |
| 3 | 1076 | 451 | 41 | 6 |
| 4 | 1472 | 396 | 47 | 6 |
| 5 | 1932 | 460 | 53 | 6 |
| 6 | 2235 | 303 | 57 | 4 |
| 7 | 2651 | 416 | 62 | 5 |
| 8 | 2895 | 244 | 67 | 5 |
201621123023《Java程序设计》第8周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- 关于SQLServer2000中触发器的使用——多行数据提交
关于触发器的使用,有很多争议.触发器的好处不言而喻是增强了数据的校验能力,能够有效地实现复杂的业务逻辑.在一定程度上走的比约束和check走的更远.关于触发器的坏处,最典型的就是触发器的使用会导致系统 ...
- idea提示,格式化代码,清除不使用的包快捷键,maven自动导jar包
一.提示快捷键 idea默认快捷键是ctrl+space,通常和别的软件快捷键冲突,所以将快捷键修改为alt+/ 二.格式化快捷键ctrl+alt+l,通常和qq.tim快捷键冲突,请修改qq或者ti ...
- python's default parameter
[python's default parameter] 对于值类型(int.double)的default函数参数,函数不会保存对默认类型的修改.对于mutable objectd类型的默认参数,会 ...
- springmvc web.xml配置之 -- SpringMVC IOC容器初始化
SpringMVC IOC容器初始化 首先强调一下SpringMVC IOC容器初始化有些特别,在SpringMVC中除了生成一个全局的spring Ioc容器外,还会为DispatcherServl ...
- 01b-1: 性能测度
- ubuntu17.10 安装CUDA
1. 更新apt-get源列表 sudo apt-get update sudo apt-get upgrade 2. 添加驱动源 sudo add-apt-repository ppa:graphi ...
- U盘修复技巧
目前,U盘的使用已经非常普遍,人们经常用U盘来备份.携带.转移文件.但是,如果将U盘从USB口拔出之前,忘记了执行卸载*作,或者执行卸载*作不彻底,或者由于误*作,而直接将U盘从USB口拔了出来,就有 ...
- php判断一个数组是另一个数组的子集
需求最少的时间复杂度判断$a数组是否是$b数组的子集 // 快速的判断$a数组是否是$b数组的子集$a = array(135,138);$b = array(135,138,137); 实现方法 这 ...
- apache重启
1.进入apache下的bin目录 /usr/local/apache/bin 2.执行命令 ./apachectl graceful
- php识别二维码
php-zbarcode 是 PHP 读取条形码的扩展模块,目前仅支持 php5.x