2013-04-13 53 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 「,也許你會多瞭解一點......