मैं सोच रहा था कि एक पूर्णांक सरणी को कैसे शुरू किया जाए जैसे कि यह आकार और मूल्य मेरे कार्यक्रम के निष्पादन के माध्यम से बदलते हैं, कोई सुझाव?
मैं सोच रहा था कि एक पूर्णांक सरणी को कैसे शुरू किया जाए जैसे कि यह आकार और मूल्य मेरे कार्यक्रम के निष्पादन के माध्यम से बदलते हैं, कोई सुझाव?
जवाबों:
हाँ: ArrayList का उपयोग करें ।
जावा में, "सामान्य" सरणियाँ निश्चित-आकार हैं। आपको उन्हें एक आकार देना होगा और उन्हें विस्तारित या अनुबंधित नहीं कर सकते। आकार बदलने के लिए, आपको एक नई सारणी बनानी होगी और मनचाहा डेटा कॉपी करना होगा - जो कि आपके लिए अक्षम और एक दर्द है।
सौभाग्य से, सभी प्रकार के अंतर्निहित वर्ग हैं जो सामान्य डेटा संरचनाओं को लागू करते हैं, और अन्य उपयोगी उपकरण भी। आप उनकी पूरी सूची के लिए जावा 6 एपीआई की जांच करना चाहेंगे ।
एक चेतावनी: ArrayList केवल ऑब्जेक्ट्स (जैसे इंटेगर) को पकड़ सकता है, न कि प्रिमिटिव (उदाहरण के लिए)। MOST मामलों में, ऑटोबॉक्सिंग / ऑटोऑनबॉक्सिंग आपके लिए चुपचाप इसका ख्याल रखेगा , लेकिन आप जो कर रहे हैं उसके आधार पर आपको कुछ अजीब व्यवहार मिल सकता है।
size
क्योंकि कार्यक्रम चलता है; size
जब उस लाइन को निष्पादित किया जाता है, तो उसे जो भी आकार प्राप्त होता है।
null
। कोई विचार क्यों?
जावा में एरर्स निश्चित आकार के होते हैं। आपको एक ArrayList की आवश्यकता है, जो जावा में उपलब्ध बहुत से मूल्यवान संग्रहों में से एक है।
के बजाय
Integer[] ints = new Integer[x]
तुम इस्तेमाल
List<Integer> ints = new ArrayList<Integer>();
फिर आपके द्वारा उपयोग की जाने वाली सूची को बदलने के लिए ints.add(y)
और ints.remove(z)
कई अन्य उपयोगी तरीकों के बीच आप उपयुक्त Javadocs में पा सकते हैं।
मैं दृढ़ता से जावा में उपलब्ध संग्रह वर्गों का अध्ययन करने की सलाह देता हूं क्योंकि वे बहुत शक्तिशाली हैं और आपको बहुत अधिक अंतर्निहित कार्यक्षमता प्रदान करते हैं जो कि जावा-न्यूबॉकों में अनावश्यक रूप से खुद को फिर से लिखने की कोशिश करते हैं।
List<Integer>
इसके बजाय आप का उपयोग क्यों करते हैं ArrayList<Integer>
?
एक बार तात्कालिक रूप से एरे को निश्चित आकार दिया जाता है। आप इसके बजाय एक सूची का उपयोग कर सकते हैं।
Autoboxing एक सरणी के समान प्रयोग करने योग्य सूची बनाते हैं, आप इसमें केवल अंतर-मान डाल सकते हैं:
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
मैं सुझाव देने वाले पिछले उत्तरों से असहमत हूं ArrayList
, क्योंकि एक डायनामिक एरे नहींArrayList
है , लेकिन एक सरणी द्वारा समर्थित सूची है। अंतर यह है कि आप निम्न कार्य नहीं कर सकते हैं:
ArrayList list = new ArrayList(4);
list.put(3,"Test");
यह आपको एक IndexOutOfBoundsException देगा क्योंकि इस स्थिति में कोई तत्व नहीं है फिर भी बैकिंग सरणी इस तरह के अतिरिक्त की अनुमति देगा। तो आपको @ रैंडी-लांस द्वारा सुझाए गए कस्टम विस्तार योग्य एरे कार्यान्वयन का उपयोग करने की आवश्यकता है
Simple code for dynamic array. In below code then array will become full of size we copy all element to new double size array(variable size array).sample code is below
public class DynamicArray {
static int []increaseSizeOfArray(int []arr){
int []brr=new int[(arr.length*2)];
for (int i = 0; i < arr.length; i++) {
brr[i]=arr[i];
}
return brr;
}
public static void main(String[] args) {
int []arr=new int[5];
for (int i = 0; i < 11; i++) {
if (i<arr.length) {
arr[i]=i+100;
}
else {
arr=increaseSizeOfArray(arr);
arr[i]=i+100;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println("arr="+arr[i]);
}
}
}
छोटे पैमाने के आकार से निपटने के लिए सूची का उपयोग करने की सिफारिश की जाती है।
आप संख्या की एक बड़ी संख्या है, तो कभी सूची और autoboxing उपयोग करते हैं,
सूची <पूर्णांक> सूची
हर एक इंट के लिए एक नया इंटेगर ऑटो बनाया गया है। सूची का आकार बढ़ने पर आपको यह धीमा हो जाएगा। ये इंटेगर अनावश्यक वस्तुएं हैं। इस मामले में, अनुमानित आकार का उपयोग करना बेहतर होगा,
int[] array = new int[ESTIMATED_SIZE];
List
इसके बजाय का उपयोग कैसे करें ? उदाहरण के लिए,ArrayList<integer>
आप किसी सरणी का आकार नहीं बदल सकते। हालाँकि, आप सही आकार के साथ एक नया सरणी बना सकते हैं और पुराने सरणी से नए में डेटा कॉपी कर सकते हैं।
लेकिन आपका सबसे अच्छा विकल्प जकार्ता कॉमन्स से IntList का उपयोग करना है। ( यहाँ )
यह एक सूची की तरह ही काम करता है, लेकिन कम जगह लेता है और इससे अधिक कुशल है, क्योंकि यह इंट के बजाय रैपर वस्तुओं को संग्रहीत करने के बजाय इंट का स्टोर करता है (यह वही है जो इंटेगर वर्ग है)।
मैंने इस सवाल का जवाब दिया और नहीं, आपको किसी एंकलिस्ट या किसी अन्य चीज़ की ज़रूरत नहीं है, यह एक असाइनमेंट था और मैंने इसे पूरा किया इसलिए हाँ सरणियाँ आकार में बढ़ सकती हैं। यहाँ लिंक है कि जावा डायनेमिक एरे का उपयोग कैसे करें और यहाँ मेरे प्रश्न का लिंक है, जिसका मैंने जावा डायनेमिक सरणियों में उत्तर दिया है
int[] array = new int[size];
size
एक चर रहा है, लेकिन एक सरणी की लंबाई तय की जानी चाहिए, मैं सही @Lord Torgamus हूँ?