1. 本周学习总结

以你喜欢的方式(思维导图或其他)归纳总结集合相关内容。
1240

2. 书面作业

1. ArrayList代码分析

1.1 解释ArrayList的contains源代码
答:'contains'方法再调用indexof方法,如果indexof方法的返回值小于0,则返回false,表示不包含'o'这个对象。indexof方法是把O与数组里的所有元素一个个比较,如果有一样的则返回该元素的位置,若没有则返回-1。

捕获.PNG

1.2 解释E remove(int index)源代码
答:首先通过rangeCheck方法判断index是否超出数组的长度,如果有提示异常,没有删除元素,再将其后面的元素向前移,使size-1的位置为null。
捕获01.PNG

捕获02.PNG

1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的具体类型吗?
答:不需要考虑元素的具体类型,因为其操作的时候都是Object类,Object类是所有类的父类。

1.4 分析add源代码,回答当内部数组容量不够时,怎么办?
答:使用ensureCapacityInternal方法,在'minCapacity - elementData.length > 0'数值大于数组本身的长度,调用使用grow方法调整生成的储存容量为原先容量的1.5倍,再把原先数组复制给新的数组。

1240
12401240

1240

1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?
答:声明为private的话只能在内部进行访问修改,外部不能调用,保证了封装性。

2. HashSet原理

2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?
答:调用方法:hashCode方法,equals方法。
存储位置:hashCode方法使用链表数组,在添加一个元素时,HashSet会先调用该对象的hashCode方法得到哈希值,再根据值确定该对象的储存位置,若已存在元素,则调用equals方法进行比较是否相同,若不同则添加到链表尾部,若相同则不添加。

2.2 将元素加入HashSet中的时间复杂度是多少?是O(n)吗?(n为HashSet中已有元素个数)
答:时间复杂度是O(1),hash表中的元素是无序的,在添加元素时不需要遍历,直接通过哈希算法进行元素的添加,而且由前题可知它需要调用hashCode方法和equals方法。

2.3 选做:尝试分析HashSet源代码后,重新解释2.1

3. ArrayListIntegerStack

题集jmu-Java-05-集合之ArrayListIntegerStack
3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)
答:ArrayIntegerStack需要定义大小,会存在栈满的情况,而且可以使用指针进行添加删除;而ArrayListIntegerStack不需要定义数组的大小,且不存在栈满情况;

3.2 结合该题简单描述接口的好处,需以3.1为例详细说明,不可泛泛而谈。
答:接口中定义了不同类的共同行为,只需要定义不同类,让他们都实现接口,这样就可以在各自的类中编写各自的实现方法,我们可以使用接口来操作不同的类,接口可以让相同的方法得到不同的实现。

4. Stack and Queue

4.1 编写函数判断一个给定字符串是否是回文,一定要使用栈(请利用Java集合中已有的类),但不能使用java的Stack类(具体原因自己搜索)与数组。请粘贴你的代码,类名为Main你的学号
答:
1240

1240

1240

4.2 题集jmu-Java-05-集合之银行业务队列简单模拟(只粘贴关键代码)。请务必使用Queue接口,并说明你使用了Queue接口的哪一个实现类?
答:Queue接口使用LinkedList实现类。
编号为奇数的顾客存到A队列,编号为偶数的顾客存到B队列。
1240

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

5.1 实验总结
答:本题需要统计单词数量及单词的出现次数,所以采用Set接口比较好,里面没有重复元素,便于统计,但又要求进行排序,所以使用TreeSet。
1240

1240

6. 选做:统计文字中的单词数量并按出现次数排序

题集jmu-Java-05-集合之5-3 统计文字中的单词数量并按出现次数排序(不要出现大段代码)
6.1 伪代码
6.2 实验总结

7. 选做 面向对象设计大作业-改进

7.1 使用集合类改进大作业或者简述你的面向对象设计大作业中,哪里使用到了集合类。
7.2 进一步完善图形界面(仅需出现改进的后的图形界面截图)
参考资料:

JTable参考项目

3.1. 码云代码提交记录

  • 在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

1240

3.2 截图PTA题集完成情况图

需要有两张图(1. 排名图。2.PTA提交列表图)

1240

3.3 统计本周完成的代码量

需要将每周的代码统计情况融合到一张表中。

周次总代码量新增代码量总文件数新增文件数
1444422
2213213105
3417204105
5676259177
61071405247
71780709306
81900120355
92335435416

转载于:https://www.cnblogs.com/wwhh/p/7819620.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐