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

  • 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如果该列表是空的
     */
posted on 2017-10-01 22:32  20162319莫礼钟  阅读(363)  评论(1编辑  收藏  举报