1. 本周学习总结
- 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容。
![]()
2. 书面作业
1. ArrayList代码分析
- 1.1 解释ArrayList的contains源代码
代码如下:
![]()
答:通过判断下标的有效性来判断是否包含对象。 - 1.2 解释E remove(int index)源代码
源代码:
![]()
答:利用下标来删除对象。 - 1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的具体类型吗?
答:不需要 - 1.4 分析add源代码,回答当内部数组容量不够时,怎么办?
源代码:
![]()
![]()
答:我们调用ensureCapacityInternal方法来判断是否需要扩容,如果需要则进行扩容。 - 1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?
答:体现了private封装性,而rangeheck方法是判断remove中元素是否元素越界,其余不用说明。
2. HashSet原理
- 2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?
答:当向HashSet(散列集)中增加新对象时,首先根据哈希函数计算要增加对象的hashCode码,根据该值来得到一个位置用元素来存放当前对象。如果在该位置上没有东西的话,那么HashSet认为该元素在集合中不存在,直接增加进去。如果在该位置已经有一个元素了,接着将准备增加到集合中的元素与该位置上的元素用equals方法进行比较。
需要调用equals方法。 - 2.2 将元素加入HashSet中的时间复杂度是多少?是O(n)吗?(n为HashSet中已有元素个数)
答:时间复杂度是O(1),不是O(n)。
3. ArrayListIntegerStack
题集jmu-Java-05-集合之ArrayListIntegerStack
- 3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)
答:不同的是前者使用了ArrayList的动态数组,则不需要去判断是否栈满,但可以使用ArrayList的方法;然而后者已经定义了数组的长度了,与此当然不一样。 - 3.2 结合该题简单描述接口的好处,需以3.1为例详细说明,不可泛泛而谈。
答:就对题目而言,两个ArrayIntegerStack方法同名,但是对IntegerStack接口有着不同的实现方法。所以接口的好处就是,可以使用相同的方法名,使用不同的方法来实现结果。
4. Stack and Queue
-
4.1 编写函数判断一个给定字符串是否是回文,一定要使用栈(请利用Java集合中已有的类),但不能使用java的Stack类(具体原因自己搜索)与数组。请粘贴你的代码,类名为Main你的学号。
答:
![]()
![]()
-
4.2 题集jmu-Java-05-集合之银行业务队列简单模拟(只粘贴关键代码)。请务必使用Queue接口,并说明你使用了Queue接口的哪一个实现类?
答:![]()
使用Queue接口的LinkedList实现类。
5. 统计文字中的单词数量并按单词的字母顺序排序后输出
题集jmu-Java-05-集合之5-2 统计文字中的单词数量并按单词的字母顺序排序后输出 (作业中不要出现大段代码)
答:
while (input.hasNextLine()) {
String str = input.next();
if (str.equals("!!!!!")){
break;}
else if (!str.contains(str))
str.add(str);
}
5.1 实验总结:这题是使用了Set的自然排序实现类TreeSet。`
3.码云及PTA
题目集:jmu-Java-05-集合
- 3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

- 3.2 截图PTA题集完成情况图
需要有两张图(1. 排名图。2.PTA提交列表图)


- 3.3 统计本周完成的代码量
需要将每周的代码统计情况融合到一张表中。
| 周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 |
| 3 | 298 | 298 | 6 | 6 |
| 4 | 368 | 70 | 8 | 2 |
| 5 | 678 | 310 | 11 | 3 |
| 6 | 999 | 321 | 16 | 5 |
| 7 | 1209 | 210 | 19 | 3 |
| 8 | 1520 | 311 | 21 | 2 |
| 9 | 1882 | 362 | 22 | 1 |







