我正在嘗試使用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'擴展的一個不幸的副作用,應該沒有完成。 –