zoukankan      html  css  js  c++  java
  • 201521123098 《Java程序设计》第7周学习总结

    1. 本周学习总结

    以你喜欢的方式(思维导图或其他)归纳总结集合相关内容。

    2. 书面作业

    1. ArrayList代码分析

    • 1.1 解释ArrayList的contains源代码

        该方法调用了indexOf(Object o)方法;
        而indexOf(Object o)方法对参数o执行的是:
        遍历该ArrayList型的容器,若找到与o参数等值的项则返回该项位置,找不到则返回-1;
        contain(Object o)方法则是对indexOf(Object o)所返回的值进行判断,若返回值大于等于0则说明存在,由此返回true,若为-1则返回false表不存在。
      
    • 1.2 解释E remove(int index)源代码

        该方法先调用rangeCheck(int index)方法,判断该位置是否超出容器范围,若超出则抛出IndexOutOfBoundsException(outOfBoundsMsg(index));
        若未超出则保存该位置的数据(旧数据),将该位置之后的数据往前移动,最后一个数据改为null后简短容器长度;
        最后返回旧数据。
      
    • 1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的类型吗?

        所有数据都存在该数组里,该数组被定义为Object[]型,说明所有类型都能用。
      
    • 1.4 分析add源代码,回答当内部数组容量不够时,怎么办?

        当容量不够时将数组的容量单元+1来储存添加的数据。	
      
    • 1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?

        因为在进行各个方法的调用时需要该方法时就会自动被调用,开发者不需要自己手动进行判断是否越界。
        如 1.4题中的add()方法。
      

    2. HashSet原理

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

        若要确定位置,则就在HashMap中找到它的hashCode,若hashCode没有被重写则都为10并返回10;	
        若被重写了就返回重写后定义的值;
        这个返回的值就是hash表的位置,储存到该位置就可以了。
      
    • 2.2 选做:尝试分析HashSet源代码后,重新解释1.1

        调用HashMap中map的containsKey(Object key)方法,该方法又调用了getEntry(Object key)方法,返回的是key在哈希表中的位置;
        containsKey(Object key)方法将返回的值进行判断,若不为null则返回1,若为null则返回0;
        这个返回的值也就是HashSet的contains(Object key)方法的返回值。
      

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

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

        下面以两个实验中对push方法的定义为例子来说明两者的不同。
      


    • 3.2 简单描述接口的好处.

        接口可以对实现类所需要的方法进行统一声明;
        实现类对接口的实现就是对其声明方法的重写。
      
    • 3.3 实验总结

        当用ArrayList型来储存栈的数据时就应该学会合理调用ArrayList自带的一些方法来提高工作效率,如:
        	push方法可以调用ArrayList的add方法;
        	empty方法可以直接返回ArrayList的isEmpty方法的返回值;
        	pop方法可以调用ArrayList的remove方法。
      

    4. Stack and Queue

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

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

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

    • 实验总结

        要学会使用TreeSet的自动排序功能来减少自己的工作量。
      

    6. 选做:加分考察-题集jmu-Java-05-集合之5-3 统计文字中的单词数量并按出现次数排序(不要出现大段代码)

    • 6.1 伪代码
    • 6.2 实验总结

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

    	打开软件:  
    

    	点击登录:  
    

    	输入用户密码:  
    

    	点击显示购物车:  
    

    	注销 重复登录过程  这次登陆agt账户  :  
    

    	购物车排序:  
    

    	注销  并尝试暴力破解某用户密码 :  
    

    	等待设定的freezeTime(aka 60seconds here)重新显示登陆框:  
    

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

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

    • 3.1. 码云代码提交记录

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

    • 3.2. PTA实验

      编程(5-1, 5-2, 5-3(选做), 5-6)

    • 3.3. 实验总结已经在作业中体现,不用写。

  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    微信小程序TodoList
    C语言88案例-找出数列中的最大值和最小值
    C语言88案例-使用指针的指针输出字符串
  • 原文地址:https://www.cnblogs.com/niverse745/p/6682846.html
Copyright © 2011-2022 走看看