• 201521044091《Java程序设计》第7周学习总结


    1. 本周学习总结

    ArrayList代码分析

    1.1 解释ArrayList的contains源代码

    用于判断Collection中是否包含某个元素。List<T>的contains方法比较的是T的equals方法。equals方法是在Object类中定义的,初始是比较对象的内存地址,而一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现。

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

    删除指定位置的元素,并且返回删除的元素。numMoved检查删除的元素是否是ArrayList中最后一个元素。如果不是最后一个,则用arraycopy移动数组,最后将数组size-1处赋值为空。

    
    private void rangeCheck(int index) {
        if (index >= size)
            throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
    }
    rangeCheck方法检查index是否越界。

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

    不用考虑,因为其参数为Objcet类型的对象,Object类又是所有类的父类。也就是说时不需要考虑元素的类型,随便放什么类型进去都可以转换类型。

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

    add方法会在末尾追加一个元素,并增加数组总数。ArrayList的add方法会在已存在的定长的集合中添加元素,当集合装满了即内部数组容量不够时,会在添加元素之前进行扩容。

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

    rangeCheck()方法保证index在ArrayList长度范围之内(index < size()),并在越界时抛出IndexOutOfBoundsException异常。所以它是私有的内部方法,只可被ArrayList中的方法如get,remove调用,所以声明为private。

    HashSet原理

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

        HashSet查找某个对象时,首先用hashCode()方法计算出这个对象的Hash码,然后再根据Hash码到相应的存储区域用equals()方法查找。

    2.2 选做:尝试分析HashSet源代码后,重新解释1.1

     

    ArrayListIntegerStack

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

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

    集合5-1中的ArrayListIntegerStack接口采用的是list列表来存储栈元素,而5-3采用的是数组的形式。采用列表进行存储不需要固定的长度,不用定义top来指向栈的顶部,入栈时不用判断栈是否为空,且列表的类库中已有很多方法可供调用。

    3.2 简单描述接口的好处.

    一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的功能。如 IntegerStack中的peek,push,pop方法在ArrayListIntegerStack中实现时可根据存储方式的不同,而以不同的形式实现这些方法。

    Stack and Queue

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

    4.2 题集jmu-Java-05-集合之5-6 银行业务队列简单模拟。(不要出现大段代码)

    answer:入队时以奇偶编号分为A,B两队,出队时再根据各队的处理效率形成新的队列q_out。A队两个出队并入队out,B队一个出队并入队q_out,当其中一个队为空时,将另一队剩余的加入队q_out

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

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

    5.1 实验总结

    要注意输入的格式,要分单词个数大于或不大于10的情况,可用foreach进行输出。

    选做:加分考察-统计文字中的单词数量并按出现次数排序

    题集jmu-Java-05-集合之5-3 统计文字中的单词数量并按出现次数排序(不要出现大段代码)

    6.1 伪代码

     

    6.2 实验总结

     

    面向对象设计大作业-改进

    7.1 完善图形界面(说明与上次作业相比增加与修改了些什么)

     

    7.2 使用集合类改进大作业

     

    码云上代码提交记录及PTA实验总结

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

    3.1. 码云代码提交记录

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

    3.2. PTA实验

    编程(5-1, 5-2, 5-3(选做), 5-6)
    作业已有涉及,无需作答

     
     
    好文要顶 关注我 收藏该文
  • 相关阅读:
    网络知识学习系列(一)
    C# 开发系列(三)
    angularJS 系列(三)- 自定义 Service
    添加百度地图,显示定位
    angularJS 系列(二)——理解指令 understanding directives
    angularJS 系列(一)
    hbuilder 手机app开发系列(一)
    vue + 百度地图api
    百度地图api
    canvas的api
  • 原文地址:https://www.cnblogs.com/jiemicc/p/6682806.html
Copyright © 2020-2023  润新知