2013-04-13 14 views
15

Stackを使用しようとしていますが、私は用語で少し混乱しています。Javaスタックpush()vs add()

私は、Stackクラスには、Javaのdocによるとpush(E e)しかないことがわかりました。

そしてVectorクラスから継承されたメソッドとしてadd(E e)addAll(Collection<? extends E> c)を持っています。

同じ機能を持っているか、またはpush(...)を使用して、オブジェクトをStackオブジェクトに挿入する方が良いですか。

つまり、push(...)の代わりにadd(...)を使用すると問題が発生しますか?

+1

これはもうあまり使われていないレガシークラスです。あなたは何をしようとしているのですか? – radai

+0

'Vector'からの拡張の不都合な副作用はありませんでした。 –

答えて

10

Kalyanaraman Santhanam:

編集:私は代わりに プッシュ(...)の(...)を追加使用している場合、私はすべての問題が発生したのでしょうか?

間違いなく、addListインターフェイスの一部としてだけでなく、Stackあるので、あなたは、すべての問題は発生しませんが、あなたはすべき他のプログラマによってあなたのコードと、その中にあなたの意図をさらに読みやすさに気づき。 pushメソッドは、彼らがStackオブジェクトを使用しているという手がかりを与え、彼らは何を期待しているのかを熟知しています。 pushにはaddとは異なる戻り値があります(前者は「プッシュオブジェクト」タイプ、後者はbooleanレスポンス)

1

これらは同じです。 JavaDocから

このスタックの一番上にアイテムをプッシュ。それはあなたが明確になると、モデルに従うことpush()を使用する必要がありますStackであればそれは、すべての相続問題についてです

addElement(item) 
+2

しかし、addElement()とadd()の2つの異なる関数はありませんか? –

+3

はい、それは... JAVADocを読んでください – Frank

0

:これはまったく同じ 効果があります。しかし、実際にはJava SE仕様から:

アイテムをこのスタックの一番上にプッシュします。これは、全く同じ効果があります:addElement(item)

1

あなたは、これがスタックに要素を追加するための標準的な方法であるとして、あなたが(原因Stackのデータ構造の考え方に)push()を使用する必要がありますStackを使用している場合。つまり、「スタックの最上部」はちょうどpush()になったアイテムです。

あなたしか追加しStackの上から削除して、あなたは(中央または末尾に追加)データを追加する他の方法が必要になると思うならば、それはあなたのコードを行いますと、私はStackを使用しないように助言する必要があります理解しづらい。

編集:私が述べてきたように (質問の編集を反映して)、私はは私がStackを扱ったかadd()を見て期待していません。 add()は、Stackを使用するための標準構文ではありません。push()です。あなたが特に継承されているものを必要としない限り、私はjavadocの本体に定義されている関数を使うことをお勧めします。

1

(英語が悪い場合は申し訳ありません、私はMXです)

理論的には、addはすべてのジェネリッククラスのメソッドなので、同じです...しかし、スタックを使用していて、 "add"の代わりに "push"メソッドを使用するので、pushを使うことをお勧めします"、多分あなたはもう少し理解するでしょう...