如题。效率、线程安全、实现机制等。Java.util.Stack继承自Vector。

解决方案 »

  1.   


    这个好像TIJ里解释得比较清楚了吧,
    该用组合的,被滥用成继承,Stack只允许从栈顶pop出来,
    extends Vector之后,可以访问任意元素了(通过调用父类Vector的方法),这个显然不符合stack的数据结构定义
      

  2.   

    实际需求不同。如果想把某个链表中的数据全部入栈,用LinkedStack效率奇高,两个链表的链接简直是太方便了。LinkedStack其它方面的好处还看不出来。
      

  3.   


    原来是这样的.非常有道理.不过有一次,我用栈来存放遍历一个图时的路径,但同时,我又要根据栈中已经走过的路来判断现在走的路是不是重复的,所以我必须能访问栈中的内容。那时,我以为java中的Stack类是不容许访问中间的元素的,所以我就自己定义了一个栈。呵呵看来,能访问栈中元素的栈还是有一定的用处的。