2013-04-13 54 views
15

我正在尝试使用Stack,但我对术语略有困惑。Java Stack push()vs add()

我发现根据Java文档,Stack类只有push(E e)

并且具有add(E e)addAll(Collection<? extends E> c)作为Vector类的继承方法。

它们是否具有相同的功能,还是使用push(...)将元素插入Stack对象是否更好?

换句话说,如果我使用add(...)而不是push(...),我会遇到任何问题吗?

+1

这些都是遗留类不再使用了。你想做什么? – radai

+0

从'Vector'扩展的一个不幸的副作用,应该没有完成。 –

回答

10

Kalyanaraman Santhanam:

编辑:我会遇到任何问题,如果我使用添加(...),而不是 推(...)?

Definitly,你不会遇到任何问题,因为addList界面的一部分,还有Stack,但你应该注意到你的代码,并在它自己的意图被其他程序员的进一步可读性。 push方法会给他们一个线索,他们正在使用Stack对象,他们会知道什么期望。还要注意的是pushadd不同的返回值(前有“推对象”类型,而后者只是一个boolean响应)

1

它们是相同的。

JavaDoc

把项压入该堆栈的顶部。这有完全相同的 效果:

addElement(item) 
+2

但isnt addElement()和add()两个不同的函数? –

+3

是的,它是...请阅读JAVADoc,这就是为什么我们有它 – Frank

0

这是所有关于继承的问题,如果它是一个Stack你应该使用push()要清楚,然后按照模型。但是,实际上来自Java SE规范:

将项目推送到此堆栈的顶部。这正好有相同的效果:addElement(item)

1

如果您使用的是Stack那么你应该使用push(),因为这是添加元素到栈上的标准方式(由于Stack的数据结构的想法) 。这意味着“堆叠顶部”是您刚才编辑的项目。

你应该永远只添加和从Stack的顶部取出,如果你认为你将需要添加数据的其他方式(添加到中间或结尾),那么我会建议不要使用Stack,因为它会让你的代码更难理解。

编辑:(反映问题编辑) 正如我所说,我会希望看到add()如果我处理一个Stackadd()不是使用Stack的标准语法,push()是。除非你特别需要那些被继承的东西,否则我会建议只使用javadoc正文中定义的函数。

1

(抱歉,如果我的英语不好,我从MX是)。

理论上,是一样的东西,因为add是所有泛型类的一个方法......但是非常值得推荐使用push,因为您使用的是堆栈,并且如果使用“push”方法而不是“add “,也许你会多了解一点......