2010-10-08 15 views
16

मैं जावा के बारे में एक प्रश्न पूछना चाहता हूं। मेरे पास उपयोगकर्ता द्वारा परिभाषित ऑब्जेक्ट क्लास, छात्र है, जिसमें 2 डेटा सदस्य, नाम और आईडी हैं। और एक और कक्षा में, मुझे उस वस्तु को घोषित करना होगा [], (उदा। student stu[?];)। हालांकि, मुझे ऑब्जेक्ट सरणी का आकार नहीं पता है। क्या ऑब्जेक्ट सरणी घोषित करना संभव है लेकिन आकार को नहीं जानते? धन्यवाद।जावा में गतिशील ऑब्जेक्ट सरणी कैसे घोषित करें?

उत्तर

17

उपयोगकर्ता ArrayList इसके बजाए। जब आप नए तत्व जोड़ते हैं तो यह स्वचालित रूप से विस्तारित हो जाएगा। यदि आपको आवश्यकता हो तो बाद में आप इसे सरणी में बदल सकते हैं।

एक और विकल्प के रूप में (सुनिश्चित करें कि आप वास्तव में क्या चाहते हैं), आप Object[] फ़ील्ड घोषित कर सकते हैं और तुरंत इसे प्रारंभ नहीं कर सकते हैं।

+1

-1: कोई उदाहरण कोड नहीं। मैं इस जवाब को बहुत पसंद करता हूं क्योंकि उन्होंने सबसे कम प्रयास किए हैं और वास्तव में पर्याप्त जानकारी दी है कि उनके उत्तर पढ़ने के बाद और खोज की आवश्यकता नहीं थी: http://stackoverflow.com/a/3887507/901641 – ArtOfWarfare

20

जैसा कि आपने शायद अब तक पता लगाया है, जावा में नियमित सरणी निश्चित आकार के हैं (एक सरणी का आकार बदला नहीं जा सकता है), ताकि सरणी में गतिशील रूप से आइटम जोड़ने के लिए, आपको एक आकार बदलने योग्य सरणी की आवश्यकता हो। जावा में, आकार बदलने योग्य सरणी को ऐरेलिस्ट क्लास (java.util.ArrayList) के रूप में कार्यान्वित किया जाता है। इसके उपयोग के एक साधारण उदाहरण:

import java.util.ArrayList; 

// Adds a student to the student array list. 
ArrayList<Student> students = new ArrayList<Student>(); 
students.add(new Student()); 

<Student> कोष्ठक (एक विशेषता जावा में कहा जाता जेनरिक) वैकल्पिक हैं; हालांकि, आपको उनका उपयोग करना चाहिए। मूल रूप से वे उस ऑब्जेक्ट के प्रकार को प्रतिबंधित करते हैं जिसे आप सरणी सूची में संग्रहीत कर सकते हैं, ताकि आप स्ट्रिंग ऑब्जेक्ट्स को पूर्णांक ऑब्जेक्ट से भरे सरणी में संग्रहीत न करें।

+0

जावा में Arrays नहीं हैं अपरिवर्तनीय। आप आसानी से 'myArray [2] = 13' कर सकते हैं, इस प्रकार सरणी बदल रहे हैं। शायद आप का मतलब है कि उनका आकार बदला नहीं जा सकता है? –

+0

हां यही मेरा मतलब है, इसे स्पष्ट करने के लिए धन्यवाद। मैं अपने जवाब में स्पष्ट कर दूंगा। – agentbanks217

0

आप इस रूप में घोषित कर सकते हैं: Student stu[]=null;, और इसे निश्चित आकार के साथ बनाएं: stu[]=new Student[10] जब तक आप आकार को नहीं जानते। यदि आपको सरणी का उपयोग करना है।

1

यह संभव नहीं है, ऑब्जेक्ट सरणी घोषित करते समय हमें सरणी का आकार निर्दिष्ट करने की आवश्यकता है;

  1. एक तरह से दोनों ही मामलों नहीं किसी भी ऑब्जेक्ट का निर्माण होगा केवल अंतरिक्ष सरणी के लिए आवंटित किया जाता है में वस्तु सरणी

    student st[]; 
    st=new student[]3; 
    
  2. दूसरा तरीका

    student st[]=new student[5]; 
    

घोषित करने के लिए।

st=new student[1]; 

इससे एक नई वस्तु बन जाएगी;

+0

यदि छात्र एक कक्षा है तो आपको छात्र पूंजी एस के साथ कॉल करना चाहिए –

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