201621123040《Java程序设计》第八周学习总结

1.本周学习总结

201621123040《Java程序设计》第八周学习总结


2.书面作业

2.1ArrayList代码分析

2.1.1解释ArrayList的contains源代码

  • ArrayList.contain()方法通过调用indexOf()来判断元素位置从而确定其是否存在其中;与此同时通过调用equals()方法处理对象不为null的情形

201621123040《Java程序设计》第八周学习总结

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

  • E remove(int index)将表中第index位置元素删除

201621123040《Java程序设计》第八周学习总结

201621123040《Java程序设计》第八周学习总结

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

  • 不用考虑,ArrayList存储的数据为引用类型,并且ArrayList存储数据实际上用的是Object的数组,Object类是所有类的默认父类;如果有实现限制数据类型的话,要按照数据类型进行存储数据

201621123040《Java程序设计》第八周学习总结

201621123040《Java程序设计》第八周学习总结

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

  • add方法首先判断加入的元素是否超过数组容量;若超过,则扩大其数组容量ensureCapacity(size+1)

201621123040《Java程序设计》第八周学习总结

201621123040《Java程序设计》第八周学习总结

201621123040《Java程序设计》第八周学习总结

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

  • private私有化,内容不被外界任意修改;rangeCheck方法用来判断给定的索引是否越界,外部不必访问

201621123040《Java程序设计》第八周学习总结

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实现各种方法

201621123040《Java程序设计》第八周学习总结

201621123040《Java程序设计》第八周学习总结

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

  • 使用IntegerStack接口,仅需构造一个类实现其接口,进而重写方法即可,使代码更加灵活简洁,也便于修改和维护

201621123040《Java程序设计》第八周学习总结

2.4 Stack and Queue

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

201621123040《Java程序设计》第八周学习总结

201621123040《Java程序设计》第八周学习总结

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

201621123040《Java程序设计》第八周学习总结

  • 通过老师实验课上点拨,使用LinkedList类(按格式输出,不能顺手直接使用System.out.println())

201621123040《Java程序设计》第八周学习总结

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

2.5.1实验总结

  • 实现按单词首字母的顺序输出,使用TreeSet()(互异性,不出现重复单词;并按首字母顺序排序)可实现;遇到"!!!!!" break跳出if()语句,反之添加单词;如何实现输出前10个(按字母顺序)单词,在课上通过老师的点拨--使用foreach并限制其范围(起初想的是用if(word.size()<=10)但苦于无果)

201621123040《Java程序设计》第八周学习总结

3.码云及PTA

3.1码云代码提交记录

201621123040《Java程序设计》第八周学习总结

3.2截图PTA题集完成情况图

201621123040《Java程序设计》第八周学习总结

201621123040《Java程序设计》第八周学习总结

201621123040《Java程序设计》第八周学习总结

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
上一篇:vue-cli#2.0 webpack 配置分析


下一篇:linux_shell使用