我正在尝试使用Stack
,但我对术语略有困惑。Java Stack push()vs add()
我发现根据Java文档,Stack
类只有push(E e)
。
并且具有add(E e)
和addAll(Collection<? extends E> c)
作为Vector
类的继承方法。
它们是否具有相同的功能,还是使用push(...)
将元素插入Stack
对象是否更好?
换句话说,如果我使用add(...)
而不是push(...)
,我会遇到任何问题吗?
我正在尝试使用Stack
,但我对术语略有困惑。Java Stack push()vs add()
我发现根据Java文档,Stack
类只有push(E e)
。
并且具有add(E e)
和addAll(Collection<? extends E> c)
作为Vector
类的继承方法。
它们是否具有相同的功能,还是使用push(...)
将元素插入Stack
对象是否更好?
换句话说,如果我使用add(...)
而不是push(...)
,我会遇到任何问题吗?
Kalyanaraman Santhanam:
编辑:我会遇到任何问题,如果我使用添加(...),而不是 推(...)?
Definitly,你不会遇到任何问题,因为add
是List
界面的一部分,还有Stack
,但你应该注意到你的代码,并在它自己的意图被其他程序员的进一步可读性。 push
方法会给他们一个线索,他们正在使用Stack
对象,他们会知道什么期望。还要注意的是push
比add
不同的返回值(前有“推对象”类型,而后者只是一个boolean
响应)
这是所有关于继承的问题,如果它是一个Stack
你应该使用push()
要清楚,然后按照模型。但是,实际上来自Java SE规范:
将项目推送到此堆栈的顶部。这正好有相同的效果:addElement(item)
如果您使用的是Stack
那么你应该使用push()
,因为这是添加元素到栈上的标准方式(由于Stack
的数据结构的想法) 。这意味着“堆叠顶部”是您刚才编辑的项目。
你应该永远只添加和从Stack
的顶部取出,如果你认为你将需要添加数据的其他方式(添加到中间或结尾),那么我会建议不要使用Stack
,因为它会让你的代码更难理解。
编辑:(反映问题编辑) 正如我所说,我会不希望看到add()
如果我处理一个Stack
。 add()
不是使用Stack
的标准语法,push()
是。除非你特别需要那些被继承的东西,否则我会建议只使用javadoc
正文中定义的函数。
(抱歉,如果我的英语不好,我从MX是)。
理论上,是一样的东西,因为add是所有泛型类的一个方法......但是非常值得推荐使用push,因为您使用的是堆栈,并且如果使用“push”方法而不是“add “,也许你会多了解一点......
这些都是遗留类不再使用了。你想做什么? – radai
从'Vector'扩展的一个不幸的副作用,应该没有完成。 –