zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Windows 8.1 应用开发文章汇总
    演绎事件委托
    Azure China
    Orchard 刨析:导航篇
    为ASP.NET MVC应用程序使用高级功能
    兼容Mono的下一代云环境Web开发框架ASP.NET vNext
    商品导航菜单
    纳斯达克对经济泡沫的定义是:当交易价格远大于内在价值的时候,就称为泡沫(转)
    当一个低级问题,第一次解决时,你会感受到成就;第二次解决时,你感受到责任,第三次解决时,你可能更多的感受到无力(转)
    互联网组织的未来:剖析GitHub员工的任性之源(转)
  • 原文地址:https://www.cnblogs.com/xiaokai668/p/7804489.html
Copyright © 2011-2022 走看看