201621123068 作业08-集合
1. 本周学习总结
2. 书面作业
1. ArrayList代码分析
1.1 解释ArrayList的<contains>
源代码
答:源代码
public boolean contains(Object o) {
return indexOf(o) >= 0;}
public int indexOf(Object o) {
if (o == null) {for (int i = 0; i < size; i++)if (elementData[i]==null)return i;
} else {for (int i = 0; i < size; i++)if (o.equals(elementData[i]))return i;
}
return -1;
}
解释:contains方法先判断对象是否为null,是则查看列表中是否包含null,包含返回下标。若对象不为null时,若该列表中包含指定元素则返回true。
1.2 解释<E remove(int index)>
源代码
答:源代码
public E remove(int index) {rangeCheck(index);modCount++;E oldValue = elementData(index);int numMoved = size - index - 1;if (numMoved > 0)System.arraycopy(elementData, index+1, elementData, index,numMoved);elementData[--size] = null; return oldValue;
}
解释:先判断传入的index的值是否超过了size,再取出index对应的元素下标,之后把元素全部向前进一位,最终返回被删除的元素,执行size减1,将最后一个元素置为null
1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的具体类型吗?
答:不需要
原因:ArrayList的实质是一个object数组,ArrayList类众多方法的参数是Object类,而Object类是所有类的父类。
1.4 分析add源代码,回答当内部数组容量不够时,怎么办?
答:源代码
解决办法:如果内存数组容量不够时,数组容量会进行自动扩容。,将数组容量扩充为1.5倍
1.5 分析<private void rangeCheck(int index)>
源代码,为什么该方法应该声明为private而不声明为public?
答:源代码
private void rangeCheck(int index) {if (index >= size)throw new IndexOutOfBoundsException(outOfBoundsMsg(index));}
解释:此方法并不需要让人知道操作过程,所以声明为private而不声明为public。
2. HashSet原理
2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?
答:首先使用hashCode()方法来计算哈希值从而得到存储位置,判断是否存在重复元素时,调用到equal()方法来比较,若不同则添加元素到尾部,相同则不添加
2.2 将元素加入HashSet中的时间复杂度是多少?是O(n)吗?(n为HashSet中已有元素个数)
答:时间复杂度为O(1),计算哈希值的次数是常量
3. ArrayListIntegerStack
题集jmu-Java-05-集合之ArrayListIntegerStack
3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)
答:数据类型不同,一个使用Array实现,一个使用列表List实现
3.2 结合该题简单描述接口的好处,需以3.1为例详细说明,不可泛泛而谈。
答:<ArrayListIntegerStack>
和<ArrayIntegerStack>
继承了同一个接口,只需要修改方法就可实现操作不同的类。
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 实验总结
答:本题使用set中的Treeset来做
3.码云及PTA
题目集:jmu-Java-05-集合
3.1. 码云代码提交记录
3.2 截图PTA题集完成情况图
3.3 统计本周完成的代码量
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
2 | 625 | 625 | 99 | 99 |
3 | 1785 | 1025 | 172 | 73 |
5 | 3634 | 1849 | 259 | 87 |
6 | 5500 | 1866 | 374 | 115 |
7 | 6073 | 573 | 421 | 47 |
8 | 6799 | 726 | 486 | 65 |
9 | 7479 | 680 | 607 | 121 |
转载于:https://www.cnblogs.com/jmu201621123068/p/7819286.html
201621123068 作业08-集合相关推荐
- JAVA基础加强篇08——集合
集合概述 集合和数组都是容器. 数组的特点 数组定义完成并启动后, 类型确定.长度固定. 在进行增删数据操作的时候,数组是不太合适的,增删数据都需要放弃原有数组或者移位. 数组适合的场景 当业务数据的 ...
- 作业——08 爬虫综合大作业
作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 一.把爬取的内容保存取MySQL数据库 import pan ...
- Numpy入门教程:08. 集合操作
背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执 ...
- C语言|博客作业08
这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?category=0&typeId=17321 这个作业要求在哪里 https://bb ...
- C语言I博客作业08
作业头 这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeId=17328 这个作业要求在哪里 https://bbs.csdn.net/ ...
- 2022OUC软件工程第二次作业-08组
第二次作业:深度学习基础 一.金知霖 一.视频学习心得及问题总结 人工智能:使一部机器像人一样进行感知.认知.决策.执行的人工程序或系统 人工智能三个层面:计算智能.感知智能.认知智能 机器学习的定义 ...
- 学校头哥作业7_集合与字典(头哥作业[Python])
7_1集合添加元素 n = input() try:ssn = []while True:sn = input().strip()if sn == '':breakssn.append(sn)prin ...
- Java作业08 计科1501 闫国雨
(一)学习总结 1.用思维导图对本周的学习内容进行总结. 参考资料: XMind. 2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态 ...
- C语言博客作业08,C语言I博客作业08
IIS7下使用4.0框架集成模式URLRewriter重写中文URL乱码问题 解决方法: 1 url中中文先通过Server.UrlEncode编码 2 修改网站编码 3.更改URLRewriter. ...
最新文章
- 086.冒泡排序的缺点及解决方案
- 计算机病毒揭秘与对抗--注册表操作2
- 最新版ffmpeg 提取视频关键帧
- asp.net中创建一个简单的自定义控件
- Nginx的index指令
- 「机械」4大传动方式优劣对比:机械、电气、气压、液压
- 【Spring】21、用spring目标对象处理Transaction rolled back because it has been marked as rollback-only...
- java创建xml设置路径_java 写入xml文件 地址如何设置为局域网内的另一台服务器上...
- 55. Yii import class 与 对象创建
- c#程序设计实训报告心得体会_C程序设计实训个人总结(推荐五篇)
- 世界品牌新500强揭晓 中国移动央视海尔入前百名
- python实现离散沃尔什变换_快速沃尔什变换(示例代码)
- 服务器金属外壳刮花了怎么修复,pc拉杆箱被磨了怎么办?3方法快速修复(附防刮方式)...
- 曝光,程序员的 10 个摸鱼神器
- 分销商城怎样设计分销体系以及会员成长体系_OctShop
- Ubuntu14.04+Texlive2014+LYX-Linux下LYX的中文配置方案
- 最新!2020中国高校毕业生薪资排行出炉!
- 42所高校2020届保研率出炉!北大过半同学可保研!
- cv2.inRange()函数---提取票据中红色印章
- Android P中的AVB校验(二)