201621123058《java程序设计》第八周学习总结

1. 本周学习总结

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

2. 书面作业

2.1. ArrayList代码分析

2.1.1 解释ArrayList的contains源代码

下面先让我们来看一下contains的源代码:

正如大家所看到的contains中用到了equals()进行对象之间的比较,所以contains与equals之间的关系很明显。

2.1.2 解释E remove(int index)源代码

查看E remove(int index)的源代码:

删除指定位置的元素,代码中的numremove的作用是判断待删除的元素是否为最后一个,如果不是最后一个就利用arraycopy移动,直到为待删的那个元素。

2.1.3 结合2.1.1与2.1.2,回答ArrayList存储数据时需要考虑元素的具体类型吗?

           答:不需要,Arraylist中存放什么类型的应该都可以,不用考虑元素的具体类型。我们都知道ArrayList存放的是Object,然而Object是所有类的父类。

2.1.4 分析add源代码,回答当内部数组容量不够时,怎么办?

查看源代码如下:

这段代码主要的功能是实现在数组最后面添加一个元素,其中size+1是增加数组长度,保证可以添加足够多的元素。

这段代码的主要功能是实现在第i个位置添加元素

从上面这段代码中可以看出,当内部数组容量不够时会直接增加为原来容量的1.5倍。

2.1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?

查看源代码如下:

被private所修饰的类,只允许被同类的调用。至于为什么用private,我觉得可能是为了防止外界其他因素的干扰吧,提高程序的稳定性。

2.2. HashSet原理

2.2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?

            HashSet中先根据Hashcopy()方法计算出哈希值,然后根据计算出的哈希值利用equals()的方法判断该值的位置。

2.2.2 将元素加入HashSet中的时间复杂度是多少?是O(n)吗?(n为HashSet中已有元素个数)

            不是,为O(1)

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

            至于Hash中保存数值时,应该注意hashcode()和equals()方法的重写。

2.3. ArrayListIntegerStack

题集jmu-Java-05-集合之ArrayListIntegerStack

2.3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)

代码大致如下:

大致不同ArrayListIntegerStack是用ArrayList动态数组来实现栈,然而ArrayIntegerStack是用Integer数组来实现栈。

2.3.2 结合该题简单描述接口的好处,需以3.1为例详细说明,不可泛泛而谈。

                 在接口中不用考虑具体的实现,所有的具体实现均在子类中完成。在上面两个方法中我们都知道接口是相同的,只是子类中的方法不同而已。

                 使得代码量更少,更加简洁。

2.4. Stack and Queue

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




运行结果:

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


运行结果:

             使用了Queue接口中的LinkedList类来实现。

2.5. 统计文字中的单词数量并按单词的字母顺序排序后输出

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

                这道题目统计的是文字中单词的数量,因此就想到了set()集合。后面要对单词字母排序,所以就想到了TreeSet()方法。

3.码云及PTA

3.1. 码云代码提交记录

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

3.2 截图PTA题集完成情况图

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

3.3 统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
1 0 0 0 0
2 0 0 0 0
3 502 502 5 5
4 1102 600 8 3
5 1783 681 14 6
6 2216 433 20 6
7 2833 617 28 8
8 3146 313 33 5
9 3380 234 38 5
posted on 2017-11-11 19:29  kai凯  阅读(245)  评论(2编辑  收藏  举报