2013-04-13 4 views
15

मैं Stack का उपयोग करने की कोशिश कर रहा हूं, लेकिन मैं शब्दावली से थोड़ा उलझन में हूं।जावा स्टैक पुश() बनाम जोड़ें()

मुझे लगता है कि Stack कक्षा में जावा डॉक के अनुसार केवल push(E e) है।

और add(E e) और addAll(Collection<? extends E> c)Vector कक्षा से विरासत विधि के रूप में है।

क्या उनके पास समान कार्यक्षमता है या Stack ऑब्जेक्ट में तत्वों को सम्मिलित करने के लिए push(...) का उपयोग करना बेहतर है।

दूसरे शब्दों में, यदि मैं push(...) के बजाय add(...) का उपयोग करता हूं तो मुझे कोई समस्या आती है?

+1

वे विरासत कक्षाएं अब और अधिक उपयोग नहीं की जाती हैं। तुम क्या करने की कोशिश कर रहे हो? – radai

+0

'वेक्टर' से विस्तार करने का एक दुर्भाग्यपूर्ण दुष्प्रभाव, जो नहीं किया जाना चाहिए था। –

उत्तर

10

Kalyanaraman संथानम:

संपादित करें: अगर मैं धक्का (...) के बजाय (...) जोड़ने का उपयोग मैं किसी भी मुद्दे का सामना करेंगे?

निश्चित रूप से, आप किसी भी मुद्दे का सामना करेंगे नहीं, क्योंकि addList इंटरफ़ेस का हिस्सा है और साथ ही Stack के रूप में, लेकिन आप अपने कोड और अन्य प्रोग्रामर द्वारा उस में अपने इरादों के आगे पठनीयता सूचना के लिए करना चाहिए। push विधि उन्हें एक सुराग देगी कि वे Stack ऑब्जेक्ट का उपयोग कर रहे हैं, वे निश्चित रूप से जान लेंगे कि किस से अपेक्षा की जानी चाहिए। यह भी ध्यान दें pushadd की तुलना में अलग वापसी मान (पूर्व है "धक्का दिया वस्तु" प्रकार और बाद सिर्फ एक boolean प्रतिक्रिया)

1

वे वही हैं।

JavaDoc से:

इस ढेर के शीर्ष पर एक आइटम धकेलती है। यह बिल्कुल वैसा ही प्रभाव पड़ता है के रूप में:

addElement(item) 
+2

लेकिन addElement() नहीं जोड़ता है और दो अलग-अलग कार्यों को जोड़ता है? –

+3

हां, यह है ... कृपया जवाडोक पढ़ें, यही कारण है कि हमारे पास यह है – Frank

0

यह विरासत मुद्दों के बारे में सब है, अगर यह एक Stack आप push() का उपयोग करना चाहिए स्पष्ट हो सकता है और मॉडल के लिए पालन करने के लिए है। लेकिन, जावा SE कल्पना से वास्तव में:

इस ढेर के शीर्ष पर एक आइटम धकेलती है। यह के रूप में बिल्कुल वैसा ही प्रभाव पड़ता है:addElement(item)

1

आप एक Stack का उपयोग कर रहे हैं तो आप (एक Stack का डेटा संरचना के विचार के कारण) push() का उपयोग करना चाहिए के रूप में इस ढेर पर तत्वों को जोड़ने के मानक तरीका है । इसका मतलब है कि "स्टैक का शीर्ष" वह आइटम है जो आपके पास push() एड है।

आप केवल कभी जोड़ना चाहिए और एक Stack के ऊपर से हटा दें और अगर आपको लगता है कि आप डेटा जोड़ने के अन्य तरीकों की आवश्यकता होगी (मध्य या अंत में जोड़ने) तो मैं एक Stack का उपयोग कर के खिलाफ सलाह के रूप में यह अपने कोड कर देगा होगा समझने में मुश्किल है।

संपादित करें: (दर्शाती प्रश्न संपादित करें) जैसा कि मैंने उल्लेख किया है, मैं नहींadd() देखने के लिए अगर मैं एक Stack के साथ काम कर रहा था उम्मीद करेंगे। add()Stack, push() का उपयोग करने के लिए मानक वाक्यविन्यास नहीं है। मैं केवल javadoc के मुख्य निकाय में परिभाषित कार्यों का उपयोग करने की अनुशंसा करता हूं जब तक कि आपको विशेष रूप से विरासत में रहने की आवश्यकता न हो।

1

(खेद है मेरी अंग्रेजी बुरा है, मैं एमएक्स से हूँ) है।

सिद्धांत रूप से, वही बात है, क्योंकि जोड़ सभी सामान्य वर्गों का एक तरीका है ... लेकिन पुश का उपयोग करने के लिए बहुत अनुशंसा की जाती है, क्योंकि आप एक ढेर का उपयोग कर रहे हैं और यदि आप "जोड़ने" के बजाय "पुश" विधि का उपयोग करते हैं ", हो सकता है कि आप थोड़ा और समझ लेंगे ...

संबंधित मुद्दे