201621123016 《Java程序设计》第八周学习总结
1. 本周学习总结

2. 书面作业
1. ArrayList代码分析
1.1 解释ArrayList的contains源代码


ArrayList在调用contains方法时会调用indexOf方法得到其位置的下标,接着根据其位置的下标是否大与等于0判断元素是否在ArrayList中。
1.2 解释E remove(int index)源代码



输入index调用rangeCheck方法判断index是否越界,接着调用elementData方法的到数组在index处的值并将其放在oldValue中,使用System.arraycopy方法让数组index后的所有值向前移动一位,再把最后一位置为空。最后返回oldValue。
1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的具体类型吗?
从1.1与1.2可以看出其方法的使用并没有使用具体的类型,所以ArrayList存储数据时应是不需要具体类型。
1.4 分析add源代码,回答当内部数组容量不够时,怎么办?





当内部数组容量不够时,ensureCapacityInternal方法会对数组进行扩容并把原数组的值拷贝到这个数组中。
1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?

rangeCheck方法是用判断index的值是否越界,对于其它的类它没有多少的使用价值,只是在本类中使用所以把其定义为private
2. HashSet原理
2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?
再把元素放入HashSet中时,会根据hashCode方法计算放入的元素的哈希值,这里所得到的哈希值便是存储所对应的链表位置,在存入元素时还会判断其值是否在链表中决定是否把值添加到链表中。
2.2 将元素加入HashSet中的时间复杂度是多少?是O(n)吗?(n为HashSet中已有元素个数)
时间复杂度是O(1)
3. ArrayListIntegerStack
题集jmu-Java-05-集合之ArrayListIntegerStack
3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)


ArrayListIntegerStack是使用ArrayList进行数组的记录,其可记录的数组大小是可动态改变的,而ArrayIntegerStack中则不行。
3.2 结合该题简单描述接口的好处,需以3.1为例详细说明,不可泛泛而谈。
在3.1中可以看出ArrayListIntegerStack和ArrayIntegerStack都继承了IntegerStack,我们可以使用相同的方法根据情况操作使用了不同存储方式的ArrayListIntegerStack和ArrayIntegerStack,这可以使程序结构清晰,使用方便。
4. Stack and Queue
4.1 编写函数判断一个给定字符串是否是回文,一定要使用栈(请利用Java集合中已有的类),但不能使用java的Stack类(具体原因自己搜索)与数组。请粘贴你的代码,类名为Main你的学号。



4.2 题集jmu-Java-05-集合之银行业务队列简单模拟(只粘贴关键代码)。请务必使用Queue接口,并说明你使用了Queue接口的哪一个实现类?

5. 统计文字中的单词数量并按单词的字母顺序排序后输出
题集jmu-Java-05-集合之5-2 统计文字中的单词数量并按单词的字母顺序排序后输出 (作业中不要出现大段代码)

5.1 实验总结
- 把一串字符串根据空格保存在ArrayList中
- 把ArrayList数组放到TreeSet中消去重复值
- 再把TreeSet中的集合重新放入ArrayList数组中输出
6. 选做:统计文字中的单词数量并按出现次数排序
题集jmu-Java-05-集合之5-3 统计文字中的单词数量并按出现次数排序(不要出现大段代码)

6.1 伪代码
6.2 实验总结
- 把一串字符串根据空格保存在ArrayList中
- 把ArrayList数组放到TreeMap中,key值记录单词,value记录单词个数
- 再把TreeMap中的集合重新放入ArrayList数组中输出
3.码云及PTA
题目集:jmu-Java-05-集合
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

3.2 截图PTA题集完成情况图


3.3 统计本周完成的代码量

| 周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
|---|---|---|---|---|
| 2 | 625 | 625 | 99 | 99 |
| 3 | 1429 | 804 | 113 | 14 |
| 4 | 3354 | 1925 | 223 | 110 |
| 5 | 3751 | 397 | 241 | 18 |
| 6 | 4369 | 618 | 80 | -161 |
| 7 | 4998 | 629 | 78 | -2 |
| 8 | 5590 | 592 | 87 | 9 |
201621123016 《Java程序设计》第八周学习总结的更多相关文章
- 201521123027 <java程序设计>第八周学习总结
1.本周学习总结 1.1思维导图 2.书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进 ...
- 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结
<面向对象程序设计Java>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第八周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第八周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nwn ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20145237 《Java程序设计》第九周学习总结
20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...
- 20175209 《Java程序设计》第九周学习总结
20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...
- 20175317 《Java程序设计》第九周学习总结
20175317 <Java程序设计>第九周学习总结 学前准备 首先下载XAMPP,下载完成后打开: 将前两个选项打开 在IDEA中配置驱动mysql-connector-java-5.1 ...
随机推荐
- speechSynthesis,TTS语音合成。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 自己定义ActionBar标题与菜单中的文字样式
自己定义标题文字样式 标题样式是ActionBar样式的一部分,所以要先定义ActionBar的样式 <style name="AppTheme" parent=" ...
- 使用 lstat 函数获取文件信息
前言 在之前的文章中,描述过如何用 fcntl 函数改变文件的状态标记.但,文件还有很多信息,如文件类型,权限设置,设备编号,访问时间等等.如果要获取这些信息,则使用函数 lstat 可以轻松达到这个 ...
- 例题6-16 单词 UVa10129
1.题目描写叙述:点击打开链接 2.解题思路:本题利用欧拉回路存在条件解决. 能够将全部的单词看做边,26个字母看做端点,那么本题事实上就是问是否存在一条路径,能够到达全部出现过的字符端点. 因为本题 ...
- Python3做采集
出于某些目的,需要在网上爬一些数据.考虑到Python有各种各样的库,以前想试试Pycharm这个IDE,就决定用它了.首先翻完<深入Python3>这本书,了解了它的语法之类的.下面就开 ...
- EasyDarwin接入ffmpeg实现264转图片快照功能
本文转自:http://blog.csdn.net/cai6811376/article/details/51774467 EasyDarwin一直坚持开源精神,所以我们着手把EasyDarwin中使 ...
- 在Eclipse中建立Maven Web项目
一.软件版本 Eclipse Java EE IDE for Web Developers. Version: Neon Release (4.6.0) Maven 3.3.9 Servlet 2.5 ...
- c/c++预处理命令#pragma
1 #pragma pack(push, 1)和#pragma pack(pop) #pragma pack用于指定数据在内存中的对齐方式.如果不指定对齐方式的话,默认为自然对齐. 1.1 #prag ...
- Connection Phase Packets
Connection Phase Packets https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet ...
- flume topology design . tier num 分层数目
32:+:1 x:1 x<=8 https://flume.apache.org/FlumeUserGuide.html#flume-topology-design Flume topology ...