2011-06-16 13 views
8

मुझे एक मौजूदा एप्लिकेशन के साथ काम करना है और एक ऐसी सूची है जो सभी प्रस्तुत वस्तुओं को संग्रहीत करती है ताकि बाद में उन्हें हटाया जा सके यदि गुई बदलती है।जावा सूची को किसी सूची में कैसे संग्रहीत करता है?

private List<Component> registeredComponents = new ArrayList<Component>(); 

अब मैं सोच रहा हूँ अगर जावा केवल भंडार वस्तुओं (ZK घटकों) या अगर यह वस्तुओं की एक प्रतिलिपि संग्रहीत करता है के लिए संदर्भ:

यह सूची है। सवाल यह है कि अगर मुझे इसे हटा देना चाहिए।

+0

शायद विषय से हटकर लेकिन उपयोगी पता करने के लिए जब संग्रह (सूची, सेट, आदि) के साथ काम: आप शायद, तरीकों की तरह होता है() का उपयोग() अपनी सूची में जोड़ना चाहें, लेकिन ये केवल अगर काम करेंगे अंदर ऑब्जेक्ट (आपके घटक वर्ग) बराबर() और हैशकोड() को ओवरराइड करता है। (अधिकांश आईडीई में आपके लिए इन्हें उत्पन्न करने के लिए feaures हैं)। तुम नहीं तो यह ऑब्जेक्ट संदर्भ और उसकी सामग्री तुलना होगा ... – dm76

उत्तर

13

सूची संदर्भ केवल शामिल होंगे। यह सभी प्रकार के संग्रहों के लिए है, न केवल ArrayLists।

जावा में वास्तव में कोई तरीका ऑब्जेक्ट को "पकड़ने" के लिए नहीं है। जब आप एक नई ऑब्जेक्ट बनाते हैं तो आपको इसका संदर्भ मिलता है (उदाहरण के लिए * ऑपरेटर उदाहरण के लिए सी ++ में उपयोग करके "dereference" का कोई तरीका नहीं है)।

+0

आप उदाहरण – Alexandr

+2

नहीं करने के लिए विधि क्लोन() अधिभावी द्वारा वस्तु ही गहरी प्रतिलिपि द्वारा "की पकड़ पाने" हो सकता है, आप पहुंच जाएंगे वस्तु की एक प्रति के संदर्भ के साथ। – aioobe

+0

यह डिफ़ॉल्ट रूप से है। आप व्यवहार को ओवरराइड कर सकते हैं। देखें http://www.java2s.com/Code/Java/Language-Basics/DeepCopyTest.htm – Alexandr

3

सूची वस्तुओं, नहीं एक प्रति के लिए संदर्भ संग्रहीत करता है। ऑब्जेक्ट इंस्टेंस किसी और के साथ साझा किए जाते हैं जो उनके लिए एक और संदर्भ होता है।

इस दूर करने के लिए, आप जीयूआई से वस्तुओं को दूर करने के बाद में (शायद आप एक माता पिता के घटक या कुछ और क्वेरी कर सकते हैं) एक और तरीका है, तो चाहते हैं के रूप में, सूची बेमानी हो सकता है। लेकिन यहां तक ​​कि यदि यह भी है, तो यहां शायद अधिकतर ओवरहेड नहीं है, और यह आपके प्रोग्राम को जटिल नहीं कर रहा है।

+0

आपके उत्तर के लिए धन्यवाद। – mw88

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