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


    1. 本周学习总结

    2. 书面作业

    Q1.ArrayList代码分析
    Q1.1 解释ArrayList的contains源代码

    这段代码的主要目的是判断在对ArrayList遍历时所用的方法,在输入参数o为null时,判断elementData[i]是否为null,如果是则返回i,不为null时,使用equals方法。

    Q1.2 解释E remove(int index)源代码

    这段代码的目的是用rangeCheck方法判断输入的参数index是否超出大小范围,如果是,则输出IndexOutOfBoundsException异常,如果不是,则删除指定的元素,之后再将删除位置之后的元素往前移,最后使得size-1的位置的值为null。

    Q1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的类型吗?
    ArrayList存储数据时不需要考虑元素的类型,它可以存储不同类型的元素,但要加上泛型。
    Q1.4 分析add源代码,回答当内部数组容量不够时,怎么办?
    先确定数组的容量,当内部数组容量不够时,增加数组长度。
    Q1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?
    检查是否越界,超出则抛出异常。而后,取出原 index 位置的值,并且将新的 element 放入 Index 位置,返回 oldValue。

    Q2.HashSet原理
    Q2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?
    当向HashSet(散列集)中增加新对象时,首先根据哈希函数计算要增加对象的hashCode码,根据该值来得到一个位置用元素来存放当前对象。如果在该位置上没有东西的话,那么HashSet认为该元素在集合中不存在,直接增加进去。如果在该位置已经有一个元素了,接着将准备增加到集合中的元素与该位置上的元素用equals方法进行比较。如果该equals方法返回false,那么说明HashSet中不存在该元素,再进行一次散列,将该元素放到散列后计算出来的地址中。如果equals方法返回true,那么说明HashSet中已经存在该元素了,不再将该元素增加到HashSet中。此过程需要调用的是equals方法和insert方法。
    Q2.2 选做:尝试分析HashSet源代码后,重新解释1.1
    ...

    Q3.ArrayListIntegerStack
    Q3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目5-3自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)
    在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目5-3是定义了Integer[]来存放输入的数据,然后再用ArrayIntegerStack类来对输入的数据进行需要的操作;而题集jmu-Java-05-集合之5-1 ArrayListIntegerStack中用list来存放输入的数据,并直接使用list中的操作就可以满足题目中的要求了。
    Q3.2 简单描述接口的好处
    能使整个结构清晰,类之间的通信简单易懂,扩展性好,提高复用性,我个人感觉,面向接口编程能够使整个代码都很有条理,在修改的时候很方便,这是切身体会!!而且采用面向接口编程的话,其他人一看你的代码就能明白你在写什么,大概想实现哪些功能,一目了然,便于查看。

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

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

        Queue<Integer> A= new ArrayDeque<Integer>();
        Queue<Integer> B= new ArrayDeque<Integer>();
    

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

            Set<String> str = new TreeSet<String>();
            Scanner sc = new Scanner(System.in);
            while (sc.hasNext()) {
                String s = sc.next();
                if (!s.equals("!!!!!"))
                    str.add(s);
                else
                    break;
            }
            System.out.println(str.size());
            for (int i = 0; i < 10; i++) {
                System.out.println(str.toArray()[i]);
            }
    

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

    Q7.面向对象设计大作业-改进
    Q7.1 完善图形界面(说明与上次作业相比增加与修改了些什么)

    Q7.2 使用集合类改进大作业
    利用Set储存用户的信息不会重复。

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

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

    3.1. 码云代码提交记录

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

    3.2. PTA实验

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

  • 相关阅读:
    Windows下使用Nginx+tomcat配置负载均衡
    Windows系统搭建Mysql Cluster集群
    java.math.BigDecimal cannot be cast to java.lang.String解决方法
    Java从后台重定向(redirect)到另一个项目的方法
    Java代码中获取配置文件(config.properties)中内容的两种方法
    mybatis和redis整合 log4j打印sql语句
    Windows系统安装测试redis
    myeclipse 2014新建maven web 项目步骤
    myeclipse用maven搭建web项目后tomcat启动报找不到jar包解决办法
    《剑指offer》丑数
  • 原文地址:https://www.cnblogs.com/ll321/p/6682639.html
Copyright © 2020-2023  润新知