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

    本周学习总结

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


    书面作业


    ArrayList代码分析

    1.1 解释ArrayList的contains源代码

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

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

    answer:remove(int index)用于删除数组容器中指定位置index上的元素,并返回此元素。先另保存并删除index元素,将index后面的所有元素全部往前依次移动一个位置,数组容器的最后位置被腾空,但是仍然持有某个对象的引用,需要把这个多余的引用置为null,返回保存的已删除的元素。
    

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

    answer:需要考虑,由1.1可知某些类型的类中会覆盖Object类中的方法以满足自身需求,所以不同类型调用时可能会有不同结果。
    

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

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

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

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

    HashSet原理

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

    answer:HashSet的元素排列没有顺序。加入时,先调用hashcode()方法查找相应的桶,如果桶中有其他元素则调用equals()方法进行比较,结果为假即桶中不存在相同元素时,直接插入,否则用新的替换旧的值。
    

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

    answer:HashSet判断是否contain时,先通过元素的hashcode与集合中的对象的hashcode值进行比较,如果没有相等的,则此对象不包含在集合中,返回false。如果有相等的,就再调用equals方法与各个对象进行比较,如果为false,则同样不包含在集合中;如果还有相等的,则contains方法返回true,表示包含。
    

    ArrayListIntegerStack

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

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

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

    3.2 简单描述接口的好处.

    answer:一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的功能。如 `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 实验总结

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

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

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

    6.1 伪代码

    采用Map映射表,<键,值> = <单词 ,出现次数>
    if(!map.contains(单词)) put<,>,
    else{
     次数 = map.get(单词);
     map.put(单词,次数+1);
    }
    

    6.2 实验总结

    answer:将映射表转为List,利用Collectons接口进行排序,可用匿名内部类定义compare方法。
    

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

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

    7.2 使用集合类改进大作业

    参考资料:
    JTable参考项目



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

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

    3.1. 码云代码提交记录

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

    3.2. PTA实验

    编程(5-1, 5-2, 5-3(选做), 5-6)
    实验总结已经在作业中体现,不用写。

  • 相关阅读:
    Creating a generic Web Parts for hosting ASP.NET User Controls
    Speed Up SQL Server Apps 提高SQL Server应用程序的运行效率 (Part 1)
    How to use CreateChildContorls method inherited from System.Web.UI.Control
    How to quickly access Web Part Management Page
    SQL Script tips for MS SQL Server
    How to enable single signon service on the SPS
    A brief summary of UML & Rational Rose – Use Case Diagram, Part II
    Borland Together for Visual Studio.Net V2.0 安装问题
    Speed Up SQL Server Apps 提高SQL Server应用程序的运行效率 (Part 2)
    体验ReSharper V1.0 for VS.Net 2003 Part I
  • 原文地址:https://www.cnblogs.com/zyjjj/p/6680647.html
Copyright © 2011-2022 走看看