今天去京东面试了,遇到一道面试题,大意如下:Stack类是通过Vector实现的,有部分开发者认为该类的设计存在问题,你对这个问题怎么看?
这道题我空着没做,我从来就没听说过这种说法,我不晓得怎么回答。反正我没觉得这个类设计有什么问题,有问题也早改了吧。也许是我孤陋寡闻,水平差。有高手来围观一下吧,看看你们有什么高见。

解决方案 »

  1.   

    纯粹从理论上的stack来说,
    它确实不应该提供这么多vector的方法
    只看对栈顶进行push pop peek就行了
    从实际上来讲,复用vecotor的现成方法来实现
    push pop peek
    有现成的,为啥不用呢
      

  2.   

    vector底层用数组实现的,push 、pop 性能大大降低,Stack最好使用链表实现。
    所以很少有人使用java提供的Stack类
      

  3.   

    一个是2楼提的:当数组默认的容量发生改变时,pop、push的性能会有较大降低;第二个:这个类是java.util.Vector的子类,由于是继承,stack就会将父类的方法继承过来
    如:add(int index,E element)等(具体见Vector的API说明)。这个破坏了stack约定的规则(只能从栈顶进,栈顶出)。所以SUN公司自己也给出的解释就是不要轻易用这个类。
      

  4.   

    请教各位大神 如何获取stack中元素数量?