zoukankan      html  css  js  c++  java
  • 20162319 第二学期第一次实验:线性表的应用

    实验一 线性表的应用,实现和分析:

    • 1 Java中的线性表的测试:过程,问题
    • 2 Java中的线性表的应用:过程,问题
    • 3 顺序表的实现(伪代码,产品代码,测试代码):过程(分析,设计,实现,测试),问题
    • 4 链表的实现(伪代码,产品代码,测试代码):过程(分析,设计,实现,测试),问题
    • 5 Java ArrayList,LinkedList源码分析:过程,学到的技巧

    实验过程:

    • 实验一
      ArrayList和LinkedList测试:

    • 1 查看ArrayList和LinkedList的JavaAPI帮助文档,参考

    • 2 用Junit对ArrayList和LinkedList的方法进行测试,要尽量覆盖正常情况,异常情况,边界情况

    • 实现情况:该实验是通过查找JavaAPI帮助文档对ArrayList和LinkedList进行测试。首先我们要从API中找到自己需要测试的方法例如ArrayList中的isEmpty、add、remove方法和LinkedList中的remove、add、contains方法。从翻译上来看,add方法是增加,remove为移除,isEmpty是判断列表中是否为空,contains是判断列表中是否有指定元素。

    • 用ArrayList举例:首先我们先创建一个ArrayList的类,在其中声明add、remove、isEmpty方法,由于这些方法本身就存在,所以我们只需要创建一个布尔类并赋予一个返回值false就行。

    • 需要注意的是,add和remove的方法中我想在里面添加String类型的字符串,所以我给他的参数赋予了一个String类型。

    • 而LinkedList方法的add、remove与ArrayList同理。

    • contains方法需要在测试时给出具体元素方便其判断。

    • 这里来解释一下为什么ArrayList中remove和LinkedList中remove方法测试时返回值不一样的原因。首先一开始我在写Array和Linked这两个类时直接给isEmpty赋予返回值,但是我的结对伙伴看见后说我这个返回值赋予有误,因为如果isEmpty判断是不为空那么这个方法的返回值在哪呢?我们在API上可以看到的是isEmpty如果判断为空则返回ture,而我在编写类的时候把返回值转成了false。所以我修改了一下代码,加入了一个if语句判断,用了size这个方法(返回列表元素值)。

    • 那为什么我在Array中不用size这个方法呢?很简单······我的idea又出问题了,调用不出size,也有可能是我的代码有误,所以恳请老师帮忙解答。

    • 截图如下:

    • 实验二:未完成

    • 实验三:未完成

    • 实验四:未完成

    • 实验五:参考http://www.cnblogs.com/rocedu/p/7483915.html对Java的ArrayList,LinkedList按要求进行源码分析,并在实验报告中体现分析结果

    • 分析结果

    • 先解压src包,然后在util中找到ArrayList和LinkedList分析一遍就行。

    • 分析的第一个方法是ensureExplicitCapacity

    ```
    private void ensureExplicitCapacity(int minCapacity) {
        modCount++;
    
        // overflow-conscious代码
        if (minCapacity - elementData.length > 0)
           grow(minCapacity);}
           /**
     * 数组分配的最大大小.
     * 一些vm储备头单词数组中.
     * 试图分配较大的数组可能导致
     *  OutOfMemoryError:请求的VM数组大小超过限制
     */
    
    ```
    
    • 第二个是LinkedList的 removeFirst
     public E removeFirst() {
            final Node<E> f = first;
            if (f == null)
                throw new NoSuchElementException();
            return unlinkFirst(f);
        }
        /**
         * 从该列表中删除并返回最后一个元素。
         *
         * @return从这个列表中最后一个元素
         * @throws NoSuchElementException如果该列表是空的
         */
    
  • 相关阅读:
    poj 1200 crasy search
    cdoj 1092 韩爷的梦
    fzu 2257 saya的小熊饼干
    zoj 3950 how many nines
    zoj 3963 heap partion
    fzu 2256 迷宫
    fzu 2253 salty fish
    hdu 2473 Junk-Mail Filter
    codeforces 129B students and shoes
    hdu 3367 Pseudoforest
  • 原文地址:https://www.cnblogs.com/Mosemonkey/p/7618069.html
Copyright © 2011-2022 走看看