1.本周学习总结
2.书面作业
2.1ArrayList代码分析
2.1.1解释ArrayList的contains
源代码
-
ArrayList.contain()
方法通过调用indexOf()
来判断元素位置从而确定其是否存在其中;与此同时通过调用equals()
方法处理对象不为null
的情形
2.1.2解释E remove(int index)
源代码
-
E remove(int index)
将表中第index位置元素删除
2.1.3结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的具体类型吗?
- 不用考虑,ArrayList存储的数据为引用类型,并且ArrayList存储数据实际上用的是Object的数组,Object类是所有类的默认父类;如果有实现限制数据类型的话,要按照数据类型进行存储数据
2.1.4分析add源代码,回答当内部数组容量不够时,怎么办?
- add方法首先判断加入的元素是否超过数组容量;若超过,则扩大其数组容量
ensureCapacity(size+1)
2.1.5分析private void rangeCheck(int index)
源代码,为什么该方法应该声明为private而不声明为public?
-
private
私有化,内容不被外界任意修改;rangeCheck
方法用来判断给定的索引是否越界,外部不必访问
2.2HashSet原理
2.2.1将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?
- HashSet类按照哈希算法来存取对象。当向集合中加入一个新对象时,会调用对象的hashCode()方法得到对象的哈希码,然后根据这个哈希码计算出对象在集合中的存储位置;HashSet对象中不能存储相同数据(调用equals()),存储数据是无序的
2.2.2将元素加入HashSet中的时间复杂度是多少?是O(n)吗?(n为HashSet中已有元素个数)
- 将元素加入HashSet中的时间复杂度不是O(n),是O(1);因为HashSet存储的数据是无序,且无需遍历,通过哈希码计算出对象在集合中的存储位置
2.3ArrayListIntegerStack
2.3.1比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)
- 本次ArrayListIntegerStack代码使用
ArrayList<Integer>()
存放对象,使用list的list.add()
list.remove()
list.isEmpty()
实现 push、pop、peek、empty方法;上次则定义指针top=-1
实现各种方法
2.3.2结合该题简单描述接口的好处,需以3.1为例详细说明,不可泛泛而谈
- 使用
IntegerStack
接口,仅需构造一个类实现其接口,进而重写方法即可,使代码更加灵活简洁,也便于修改和维护
2.4 Stack and Queue
2.4.1编写函数判断一个给定字符串是否是回文,一定要使用栈(请利用Java集合中已有的类),但不能使用java的Stack类(具体原因自己搜索)与数组。请粘贴你的代码,类名为Main你的学号
2.4.2题集jmu-Java-05-集合之银行业务队列简单模拟(只粘贴关键代码)。请务必使用Queue接口,并说明你使用了Queue接口的哪一个实现类?
- 通过老师实验课上点拨,使用LinkedList类(按格式输出,不能顺手直接使用
System.out.println()
)
2.5统计文字中的单词数量并按单词的字母顺序排序后输出
2.5.1实验总结
- 实现按单词首字母的顺序输出,使用
TreeSet()
(互异性,不出现重复单词;并按首字母顺序排序)可实现;遇到"!!!!!" break跳出if()语句,反之添加单词;如何实现输出前10个(按字母顺序)单词,在课上通过老师的点拨--使用foreach并限制其范围(起初想的是用if(word.size()<=10)但苦于无果)
3.码云及PTA
3.1码云代码提交记录
3.2截图PTA题集完成情况图
3.3统计本周完成的代码量
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 | |||||
---|---|---|---|---|---|---|---|---|---|
第一周 | 189 | 189 | 10 | 10 | |||||
第二周 | 304 | 304 | 9 | 9 | |||||
第三周 | 557 | 557 | 10 | 10 | |||||
第四周 | 621 | 621 | 8 | 8 | |||||
第五周 | 326 | 326 | 7 | 7 | |||||
第六周 | 972 | 972 | 12 | 12 | |||||
第七周 | 338 | 338 | 4 | 4 | |||||
第八周 | 379 | 379 | 6 | 6 |