• 20162311 课堂测试 泛型类—Bag


    课堂测试 泛型类—Bag

    目录

    一、题目要求

    返回目录

    二、设计思路

    自定义一个Bag类,实现BagInterface中的方法。Bag类应该是一个可以存放东西的包,且存放的类型可以自定义,即使用泛型。先在Bag中声明一个名为bag的List<T>,在构造方法中将其实例化。接下来实现方法。每个需要实现的方法可以用bag调用ArrayList中的方法来实现。

    返回目录

    三、问题和解决办法

    • 问题:无法直接用ArrayList中的toArray()方法来实现Bag中的toArray()方法

    • 分析过程及解决办法:ArrayList中有两个toArray()方法,没有参数,返回一个Object类型的数组,但我们需要返回一个T类型数组,如果强制转型,会抛出异常,无法强制转型;第二个方法,返回一个T类型的数组,但需要传入一个T类型的数组作为参数。于是我给接口中的toArray()方法加了个参数。那么在实际使用的时候,先声明一个相应类型的大小为1的数组,然后调用toArray()方法时传进去,就能把Bag中的元素转化到数组中。

    • 接口中的方法:

    • 实现的方法:

    • 在TestBag中的应用:

    返回目录

    四、代码运行截图

    1. Bag的测试类运行截图:Books类为自定义的类。

    1. 单元测试运行截图:
    • getCurrentSize()方法
    • isEmpty()方法
    • add(T newEntry)方法
    • remove()方法
    • remove (T anEntry)方法
    • clear()方法
    • getFrequencyOf(T anEntry)方法
      这个方法出了点问题,单元测试的时候即使是正确结果也显示的是红条,但是在测试类中调用这个方法得出来的结果却没有问题,目前还不知道是什么原因,还没有解决。
    • contains(T anEntry)方法
    • toArray(T[] a)方法

      返回目录

    五、代码托管地址

    返回目录

    六、总结

    这次的测试,主要是考察泛型的运用。我感觉我写的代码只是借用了List这个已经写好的泛型类,没有什么自己创新的算法。。。以我目前的水平感觉也写不出来不过我下载了Java API的源代码,在我自己写Bag类的时候,也看了一下ArrayList中的那些方法是怎么实现的,可是感觉就一个字——晕!有一个稍微看起来简单的方法toArray()
    但是这里又涉及到copyOf这个方法,我又去找这个方法的源代码,然后这个方法又要用到其他方法。。。感觉真的是一环扣一环。最后我只好放弃。所以最后我总结出,以我现在的水平,好像也只能看看源代码,然后再直接调用其中的方法来编写我的Bag类了。不过虽然现在做不到,但是多看看还是有用的,说不定哪天就能受到启发呢。

    返回目录

  • 相关阅读:
    不同类型的磁盘存储在Ubuntu下的性能测试
    Ubuntu16.04编译安装Redis Desktop Manager
    gnu screen的用法
    MySQL Workbench常用快捷键
    Libevent例子(二)
    Libevent例子(一)
    Ubuntu下的init.d管理update-rc.d
    Centos7 修改终端文字显示颜色
    通过socks tunnel设置http代理
    linux:C++的socket编程
  • 原文地址:https://www.cnblogs.com/-zzr-/p/7587227.html
Copyright © 2020-2023  润新知