java- week 8 集合

1. 本周学习总结

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

2. 书面作业

1. ArrayList代码分析

1.1 解释ArrayListcontains源代码


答:我们可以从源代码的注释可以知道,如果这个列表中包含指定的元素即满足(0null?enull:o.equals(e))的元素e时,则它的返回值为“true”。

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


答:先判断所要删除的位置是否超出了数组大小:若超出,则抛出异常;若未超出,则删除该位置的元素(类似数组查找元素),并将该位置之后的元素逐一往前移,最后把空出来的位置设为null

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

答:不需要,因为ArrayList存储的数据都是Object类,Object是所有数据类型的父类,所以不需要考虑。

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


答:由源代码知使用了“ensureCapacityInternal方法”,确保数组容量是传入参数和默认长度的最大值即可。

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

答:因为使用private声明,说明该方法只对同包的类和继承该类的子孙类可见。不用public作声明,是因为没有必要对外部可见。rangeCheck方法用于判断是否超出容量范围,无返回值。

2. HashSet原理

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

答:1、存储位置的确定:当集合中需要添加一个元素时,HashSet会先调用hashCode()方法得到该元素的哈希值,根据该值确定决定该对象在表中应存放的位置。如果表中已有其他元素,则调用equals()方法与数组中已有的元素进行比较。若比较的结果为false,则将对象插入数组中;若比较结果为真,则用新值替换旧值。

2、调用的方法:equals()方法和hashCode()方法

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

答:时间复杂度为:O(1),因为HashSet是由哈希表来实现的,所以在添加元素时不需要重新遍历。

3. ArrayListIntegerStack

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

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

答:答:使用 ArrayListIntegerStack ArrayIntegerStack 更为简单。
ArrayListIntegerStack是用ArrayList来实现栈,用它来实现的栈不需要考虑栈满的情况,因为ArrayList本身是可以自动扩容的。而ArrayIntegerStack是用数组来实现栈,需要考虑栈满的情况。

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

答:在3.1中表现的是:方法名可以相同(都是ArrayIntegerStack),而且都继承了IntegerStack接口,但是方法内的具体实现不一样;所以接口的好处体现在:接入同一个接口,完成同一功能,不考虑其具体的实现方法。

4. Stack and Queue

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

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

答:创建两个队列:A,B;当输入正整数为偶数时,进B队列,反之进A队列;

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

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

5.1 实验总结

答:因为题目要求最后按照字母顺序输出,所以需要排序后输出,我们知道TreeSet具有自动排序功能,因此这题应该选用TreeSet进行定义更为合适。

3.码云及PTA

题目集:jmu-Java-05-集合

3.1. 码云代码提交记录

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

3.2 截图PTA题集完成情况图

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


3.3 统计本周完成的代码量

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

posted @ 2017-11-11 10:05  网络1611马玉兰  阅读(208)  评论(5编辑  收藏  举报