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
  • 相关阅读:
    401. Binary Watch
    46. Permutations
    61. Rotate List
    142. Linked List Cycle II
    86. Partition List
    234. Palindrome Linked List
    19. Remove Nth Node From End of List
    141. Linked List Cycle
    524. Longest Word in Dictionary through Deleting
    android ListView详解
  • 原文地址:https://www.cnblogs.com/xiaokai668/p/7804489.html
Copyright © 2011-2022 走看看