作业08-集合
1. 本周学习总结
以你喜欢的方式(思维导图或其他)归纳总结集合相关内容。
2. 书面作业
1. ArrayList代码分析
1.1 解释ArrayList的contains
源代码
从图中可以看出contain
函数实际调用的是indexof
这个函数,而在indexof
这个函数中,如果添加的参数存在的话,则返回下标i,否则不存在则返回-1。
1.2 解释E remove(int index)
源代码
首先用rangCheck来判断数组是否有越界情况,在没有数组无越界的前提下,删除定位点index位置的元素,同时数组自行减一,当最后一个元素被删除时返回NULL。
1.3 结合1.1与1.2,回答ArrayList
存储数据时需要考虑元素的具体类型吗?
不需要,因为从1.1何1.2的图中可以看出,所有元素的父类都是object类
,即超级父类(所有类的父类),所以ArrayList
存储数据时需要考虑元素不的具体类型。
1.4 分析add源代码,回答当内部数组容量不够时,怎么办
用ensureCapacityInternal()
方法判断内部数组是否需要扩容,如果需要则使用ensureExplicitCapacity()
方法来进行扩容,然后再用Arrays.copyOf()
方法将原数组元素拷贝到新的扩容数组当中。
1.5 分析private void rangeCheck(int index)
源代码,为什么该方法应该声明为private而不声明为public?
rangeCheck
这个方法只是为了来判断数组是否有越界现象,只需要在ArryList这个类中自行调用判断即可,对其他类没有太大的利用价值。
2. HashSet原理
2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?
可以通过HashCode()这个函数对所添加的元素计算其哈希值(便是他在链表中的位置),如果该位置已有元素,则调用equal来进行比较,如果相同则不添加,反之,将其添加到该链表的尾部。
2.2 将元素加入HashSet中的时间复杂度是多少?是O(n)吗?(n为HashSet中已有元素个数)
元素加入HashSet中的时间复杂度为O(1);
3. ArrayListIntegerStack
题集jmu-Java-05-集合
之ArrayListIntegerStack
3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04
-面向对象2-进阶-多态、接口与内部类中的题目自定义接口ArrayIntegerStack
,有什么不同?(不要出现大段代码)
ArrayListIntegerStack
时,是采用ArryList进行数组存储的,其为动态数组,可以制动进行扩容,而ArrayIntegerStack
则不行.
3.2 结合该题简单描述接口的好处,需以3.1为例详细说明,不可泛泛而谈。
在实现了IntegerStack
接口之后,不论是采用ArryList进行数组存储的还是其他存储方式都可以采用接口中的方法,因为接口是抽象的,其中的方法也是抽象的所以具体实现方法可以因存储方法的不同而有不同的实现
4. Stack and Queue
4.1 编写函数判断一个给定字符串是否是回文,一定要使用栈(请利用Java集合中已有的类),但不能使用java的Stack类(具体原因自己搜索)与数组。请粘贴你的代码,类名为Main你的学号。
4.2 题集jmu-Java-05-集合之银行业务队列简单模拟(只粘贴关键代码)。请务必使用Queue接口,并说明你使用了Queue接口的哪一个实现类?
实现了Queue接口中的LinkList的实现类
5. 统计文字中的单词数量并按单词的字母顺序排序后输出
题集jmu-Java-05-集合之5-2 统计文字中的单词数量并按单词的字母顺序排序后输出 (作业中不要出现大段代码)
5.1 实验总结
使用TreeSet进行单词字母的排序,然后在放入ArryList容器中进行输出。
3.码云及PTA
题目集:jmu-Java-05-集合
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
3.2 截图PTA题集完成情况图
需要有两张图(1. 排名图。2.PTA提交列表图)
3.3 统计本周完成的代码量
需要将每周的代码统计情况融合到一张表中。
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
2 | 271 | 271 | 10 | 10 |
3 | 386 | 135 | 13 | 3 |
4 | 697 | 311 | 23 | 10 |
5 | 1087 | 390 | 25 | 2 |
6 | 1728 | 641 | 32 | 7 |
7 | 3887 | 2159 | 43 | 11 |
8 | 4271 | 384 | 36 | -7 |