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中的元素转化到数组中。

  • 接口中的方法:

1063734-20170924132548571-832571620.png

  • 实现的方法:

1063734-20170924132645712-1544954565.png

  • 在TestBag中的应用:

1063734-20170924132651150-320810244.png

返回目录

四、代码运行截图

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

1063734-20170924133748978-1464746880.png

  1. 单元测试运行截图:
  • getCurrentSize()方法
    1063734-20170924134303009-1701153603.png
  • isEmpty()方法
    1063734-20170924142819618-1824960290.png
  • add(T newEntry)方法
    1063734-20170924142857540-1189529064.png
  • remove()方法
    1063734-20170924142920821-1439105069.png
  • remove (T anEntry)方法
    1063734-20170924142938040-797516966.png
  • clear()方法
    1063734-20170924142954900-2111591229.png
  • getFrequencyOf(T anEntry)方法
    这个方法出了点问题,单元测试的时候即使是正确结果也显示的是红条,但是在测试类中调用这个方法得出来的结果却没有问题,目前还不知道是什么原因,还没有解决。
  • contains(T anEntry)方法
    1063734-20170924143028275-1601379127.png
  • toArray(T[] a)方法
    1063734-20170924143059056-467294801.png
    返回目录

五、代码托管地址

返回目录

六、总结

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

返回目录

转载于:https://www.cnblogs.com/-zzr-/p/7587227.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值