CodeGym /Java Blog /अनियमित /जावा में सरणी
John Squirrels
स्तर 41
San Francisco

जावा में सरणी

अनियमित ग्रुप में प्रकाशित
एक भंडारण कक्ष में अलमारियाँ की कल्पना करो। उनमें से प्रत्येक की अपनी संख्या है, और उनमें से प्रत्येक कुछ सामान वस्तु को संग्रहीत करता है। या एक शराब की सूची जहां हर तरह की शराब की संख्या होती है और आप अपने पेय की संख्या देकर आदेश देते हैं। या छात्रों की एक सूची जिसमें "एडम्स" पहले स्थान पर और "ज़िमर" अंतिम स्थान पर दर्ज है। या एक हवाई जहाज पर यात्रियों की एक सूची, जिनमें से प्रत्येक को एक क्रमांकित सीट दी गई है। जावा में, सरणियों का उपयोग अक्सर ऐसी संरचनाओं के साथ काम करने के लिए किया जाता है, यानी सजातीय डेटा के सेट।

CodeGym पाठ्यक्रम में सारणियाँ

CodeGym पर, आप Java सिंटेक्स खोज के स्तर 7 पर सरणियों के साथ काम करना शुरू करते हैं। तीन पाठ उनके लिए समर्पित हैं, साथ ही सरणियों के साथ काम करने के आपके कौशल को मजबूत करने के लिए विभिन्न स्तरों पर 8 कार्य भी हैं। लेकिन आप पाठ्यक्रम के दौरान कई बार सरणियों का सामना करेंगे (विशेष रूप से, जावा कलेक्शंस खोज में और आपके भविष्य के काम के हिस्से के रूप में ऐरे क्लास का अध्ययन किया जाएगा।

एक सरणी क्या है?

एक सरणी एक डेटा संरचना है जो समान प्रकार के तत्वों को संग्रहीत करती है। आप इसे क्रमांकित कोशिकाओं के समूह के रूप में सोच सकते हैं। आप प्रत्येक सेल में कुछ डेटा डाल सकते हैं (प्रति सेल एक डेटा तत्व)। एक विशिष्ट सेल को उसके नंबर का उपयोग करके एक्सेस किया जाता है। सरणी में एक तत्व की संख्या को अनुक्रमणिका भी कहा जाता है । जावा में, एक सरणी सजातीय है, अर्थात इसकी सभी कोशिकाओं में एक ही प्रकार के तत्व होते हैं। इस प्रकार, पूर्णांकों की एक सरणी में केवल पूर्णांक ( int ), स्ट्रिंग्स की एक सरणी - केवल स्ट्रिंग्स, और हमारे द्वारा बनाए गए डॉग वर्ग के उदाहरणों की एक सरणी में केवल डॉग ऑब्जेक्ट होंगे। दूसरे शब्दों में, जावा हमें सरणी के पहले सेल में एक पूर्णांक, दूसरे में एक स्ट्रिंग और तीसरे में एक कुत्ता नहीं डालेगा।जावा में ऐरे - 2

एक सरणी घोषित करना

आप एक सरणी कैसे घोषित करते हैं?

किसी भी चर की तरह, जावा में एक सरणी घोषित की जानी चाहिए। यह दो तरीकों में से एक में किया जा सकता है। वे समतुल्य हैं, लेकिन पहला तरीका जावा शैली के साथ अधिक सुसंगत है। दूसरा सी भाषा की विरासत है: कई सी प्रोग्रामर जावा में चले गए, और उनकी सुविधा के लिए एक वैकल्पिक तरीका रखा गया था। तालिका जावा में सरणी घोषित करने के दोनों तरीकों को दिखाती है:
नहीं। एक सरणी घोषित करना, जावा सिंटैक्स उदाहरण टिप्पणी
1.
डेटा प्रकार [] सरणी नाम;

int[] myArray;

Object[] 
arrayOfObjects;  
इस तरह एक सरणी घोषित करना उचित है। यह जावा शैली है।
2.
डेटा प्रकार सरणी नाम [];

int myArray[];

Object 
arrayOfObjects[];
सी/सी ++ से विरासत में मिली सरणी घोषणा विधि, जावा में काम करती है
दोनों ही मामलों में, डेटाटाइप सरणी में चर का प्रकार है। उदाहरणों में, हमने दो सरणियाँ घोषित कीं। एक int s, और दूसरा - ऑब्जेक्ट ऑब्जेक्ट्स स्टोर करेगा । इस प्रकार, एक सरणी घोषणा में एक नाम और प्रकार (सरणी के तत्वों का प्रकार) होता है। ArrayName सरणी का नाम है।

एक सरणी बनाना

आप एक सरणी कैसे बनाते हैं?

किसी भी अन्य वस्तु की तरह, आप नए ऑपरेटर का उपयोग करके एक जावा सरणी बना सकते हैं, अर्थात इसके लिए स्मृति में एक स्थान आरक्षित कर सकते हैं। इसे इस प्रकार किया जाता है:

new typeOfArray[length]; 
जहां typeOfArray सरणी का प्रकार है और लंबाई इसकी लंबाई है (अर्थात कोशिकाओं की संख्या) को पूर्ण संख्या ( int) के रूप में व्यक्त किया गया है। लेकिन ध्यान दें कि यहां हमने केवल सरणी के लिए स्मृति आवंटित की है - हमने घोषित सरणी को किसी भी पहले घोषित चर से संबद्ध नहीं किया है। आम तौर पर, एक सरणी पहले घोषित की जाती है और फिर तत्काल होती है, उदाहरण के लिए:

int[] myArray; // Array declaration
myArray = new int[10]; // Create (allocate memory for) an array of 10 ints
यहाँ हमने myArray नामक पूर्णांकों की एक सरणी बनाई है , जो संकलक को सूचित करती है कि इसमें 10 कोशिकाएँ हैं (जिनमें से प्रत्येक में एक पूर्णांक होगा)। हालाँकि, घोषित होने पर तुरंत एक सरणी बनाने के लिए निम्नलिखित संक्षिप्त सिंटैक्स का उपयोग करना अधिक सामान्य है:

int[] myArray = new int [10]; // Declare the array and allocate memory "in one blow"
कृपया ध्यान दें:नए ऑपरेटर का उपयोग करके एक सरणी बनाने के बाद , इसकी कोशिकाओं में डिफ़ॉल्ट मान होते हैं। संख्यात्मक प्रकारों के लिए (जैसा कि हमारे उदाहरण में है), बूलियन प्रकार के लिए डिफ़ॉल्ट मान 0 है, यह गलत है , और संदर्भ प्रकारों के लिए, यह शून्य है । इस प्रकार, इस कथन को क्रियान्वित करने के बाद

int[] myArray = new int[10];
हमें दस पूर्णांकों की एक सरणी मिलती है और, जब तक प्रोग्राम मानों को बदलने के लिए कुछ नहीं करता, तब तक प्रत्येक सेल में 0 होता है।

आप " सरणियों के बारे में कुछ " लेख में सरणियों के बारे में अधिक जानकारी प्राप्त कर सकते हैं

जावा में सरणी लंबाई

जैसा कि हमने ऊपर कहा, एक सरणी की लंबाई उन तत्वों की संख्या है जिन्हें धारण करने के लिए सरणी को डिज़ाइन किया गया है। किसी सरणी की लंबाई उसके बनने के बाद नहीं बदली जा सकती। कृपया ध्यानकि सरणी तत्वों को जावा में शून्य से शुरू किया गया है। इस प्रकार, यदि हमारे पास 10 तत्वों की एक सरणी है, तो पहले तत्व का सूचकांक 0 है और अंतिम का सूचकांक 9 है। आप लंबाई चर जावा में सारणियाँ - 3का उपयोग करके सरणी की लंबाई प्राप्त कर सकते हैं । उदाहरण के लिए:

int[] myArray = new int[10]; // Create an int array for 10 elements and name it myArray
System.out.println(myArray.length); // Display the array's length, i.e. the number of elements we can put into the array
आउटपुट:

10

किसी ऐरे को इनिशियलाइज़ करना और उसके एलिमेंट्स को एक्सेस करना

अब हम जानते हैं कि जावा में ऐरे कैसे बनाते हैं। प्रक्रिया हमें एक खाली सरणी नहीं, बल्कि डिफ़ॉल्ट मानों से भरी एक सरणी प्राप्त करती है। उदाहरण के लिए, एक इंट सरणी के लिए, यह 0 है, और यदि हमारे पास किसी संदर्भ प्रकार की सरणी है, तो प्रत्येक सेल में डिफ़ॉल्ट शून्य है । हम एक सरणी तत्व तक पहुँचते हैं (उदाहरण के लिए, इसका मान सेट करने के लिए, इसे स्क्रीन पर प्रदर्शित करें, या इसके साथ कुछ ऑपरेशन करें) इसके सूचकांक द्वारा। ऐरे इनिशियलाइज़ेशन विशिष्ट मानों (डिफ़ॉल्ट के अलावा) के साथ एक ऐरे को भरने की प्रक्रिया है। उदाहरण: चलिए 4 सीज़न के लिए एक स्ट्रिंग ऐरे बनाते हैं और इसे सीज़न के नामों से भरते हैं।

String[] seasons = new String[4]; /* Declare and create an array. Java allocates memory for an array of 4 strings, and each cell is set to null (since String is a reference type) */ 

seasons[0] = "Winter"; /* We set the first cell, i.e. the cell with index zero, to "Winter". Here we access the zeroth element of the array and write a specific value to it. */ 
seasons[1] = "Spring"; // We follow a similar procedure for the cell with index 1 (the second cell)
seasons[2] = "Summer"; // ... index 2
seasons[3] = "Autumn"; // and finally, index 3
अब ऋतुओं के नाम हमारी सारणी के चार कक्षों में लिखे गए हैं। हम एरे को एक अलग तरीके से इनिशियलाइज़ कर सकते हैं, डिक्लेरेशन और इनिशियलाइज़ेशन को मिलाकर:

String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
क्या अधिक है, नए ऑपरेटर को छोड़ा जा सकता है:

String[] seasons = {"Winter", "Spring", "Summer", "Autumn"};

आप जावा में स्क्रीन पर एक सरणी कैसे प्रदर्शित करते हैं?

आप for लूप का उपयोग करके सरणी तत्वों को स्क्रीन पर (यानी कंसोल पर) प्रदर्शित कर सकते हैं। एक सरणी प्रदर्शित करने का एक और छोटा तरीका " सरणियों के साथ काम करने के लिए उपयोगी तरीके " नामक पैराग्राफ में चर्चा की जाएगी। इस बीच, इस उदाहरण पर एक नज़र डालें जहां लूप का उपयोग करके एक सरणी प्रदर्शित की जाती है:

String[] seasons = new String {"Winter", "Spring", "Summer", "Autumn"}; 
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]); 
}
कार्यक्रम निम्नलिखित प्रदर्शित करेगा:

Winter 
Spring 
Summer 
Autumn

जावा में एक आयामी और बहुआयामी सरणियाँ

लेकिन क्या होगा अगर हम संख्याओं, तारों या अन्य वस्तुओं की एक सरणी नहीं बनाना चाहते हैं, बल्कि सरणियों की एक सरणी बनाना चाहते हैं? जावा आपको ऐसा करने देता है। जिस प्रकार की सरणी से हम पहले से परिचित हैं ( int[] myArray = new int[8] ) उसे एक आयामी सरणी के रूप में जाना जाता है। लेकिन सरणियों की एक सरणी को द्वि-आयामी सरणी कहा जाता है। यह एक तालिका की तरह है जिसमें एक पंक्ति संख्या और एक स्तंभ संख्या होती है। या, यदि आपने रेखीय बीजगणित की मूल बातें सीख ली हैं, तो आप इसे एक मैट्रिक्स के रूप में सोच सकते हैं। जावा में सरणी - 4हमें ऐसे सरणियों की आवश्यकता क्यों है? ठीक है, मैट्रिसेस और तालिकाओं के साथ-साथ समान संरचना वाली अन्य वस्तुओं को प्रोग्राम करने के लिए। उदाहरण के लिए, शतरंज की बिसात को 8x8 सरणी द्वारा दर्शाया जा सकता है। एक बहुआयामी सरणी घोषित और निम्नानुसार बनाई गई है:

Int[][] myTwoDimentionalArray = new int[8][8];
इस सरणी में ठीक 64 तत्व हैं: myTwoDimentionalArray[0][0] , myTwoDimentionalArray[0][1] , myTwoDimentionalArray[1][0] , myTwoDimentionalArray[1][1] और इतने पर myTwoDimentionalArray तक [7][7] . इसलिए यदि हम इसका उपयोग शतरंज की बिसात का प्रतिनिधित्व करने के लिए करते हैं, तो A1 myTwoDimentionalArray[0][0] से मेल खाता है और E2 myTwoDimentionalArray[4][1] से मेल खाता है । लेकिन हम इसे कितनी दूर धकेल सकते हैं? जावा में, आप सरणियों की एक सरणी निर्दिष्ट कर सकते हैं ... सरणियों की एक सरणी, और इसी तरह। बेशक, त्रि-आयामी और उच्च-आयामी सरणी बहुत ही कम उपयोग की जाती हैं। उस ने कहा, उदाहरण के लिए, आप रुबिक के घन को प्रोग्राम करने के लिए त्रि-आयामी सरणी का उपयोग कर सकते हैं।

सरणियों के साथ काम करने के लिए उपयोगी तरीके

जावा में एरेज़ के साथ काम करने के लिए java.util.Arrays क्लास है। सामान्य तौर पर, सरणियों पर किए जाने वाले सबसे आम ऑपरेशन इनिशियलाइज़ेशन (तत्वों के साथ भरना), एक तत्व को पुनः प्राप्त करना (इंडेक्स द्वारा), सॉर्ट करना और खोज करना है। सरणियों को खोजना और छाँटना दूसरे दिन के लिए विषय हैं। एक ओर, स्वयं कई खोज और छँटाई एल्गोरिदम लिखना अच्छा अभ्यास है। दूसरी ओर, सभी बेहतरीन एल्गोरिदम को पहले ही लागू किया जा चुका है और मानक जावा पुस्तकालयों में शामिल किया गया है, और आप कानूनी तौर पर उनका उपयोग कर सकते हैं। यहाँ इस वर्ग में तीन उपयोगी विधियाँ हैं।

एक सरणी छँटाई

शून्य सॉर्ट (int [] myArray, int fromIndex, int toIndex) विधि आरोही क्रम में एक पूर्णांक सरणी या सबरे को सॉर्ट करती है।

किसी सरणी में किसी तत्व की खोज करना

int बाइनरीसर्च (int [] myArray, int fromIndex, int toIndex, int key) । यह विधि अनुक्रमणिका से toIndex तक सॉर्ट किए गए myArray सरणी या सबएरे में मुख्य तत्व की तलाश करती है । यदि आइटम मिल जाता है, तो यह अपना इंडेक्स लौटाता है। अन्यथा, यह (-fromIndex)-1 लौटाता है ।

एक सरणी को एक स्ट्रिंग में कनवर्ट करना

String toString(int[] myArray) मेथड एक ऐरे को एक स्ट्रिंग में कनवर्ट करता है। जावा में, सरणियाँ toString() को ओवरराइड नहीं करती हैं । इसका अर्थ यह है कि यदि आप " स्क्रीन पर एक सरणी प्रदर्शित करें " नामक अनुच्छेद में एक समय में एक तत्व के बजाय एक बार में एक संपूर्ण सरणी (System.out.println(myArray)) प्रदर्शित करने का प्रयास करते हैं , तो आपको यह मिलेगा वर्ग का नाम और सरणी का हेक्साडेसिमल हैश ( Object.toString() द्वारा परिभाषित )। यदि आप नौसिखिए हैं, तो हो सकता है कि आप toString विधि के बारे में स्पष्टीकरण को न समझें। प्रारंभ में, आपको इसकी आवश्यकता नहीं है, लेकिन इस पद्धति का उपयोग करने से किसी सरणी को प्रदर्शित करना आसान हो जाता है। जावा आपको लूप का उपयोग किए बिना आसानी से एक सरणी प्रदर्शित करने देता है। नीचे दिया गया उदाहरण इसे प्रदर्शित करता है।

सॉर्ट, बाइनरीसर्च और टूस्ट्रिंग का उपयोग करने वाला एक उदाहरण

आइए पूर्णांकों की एक सरणी बनाएं, इसे toString का उपयोग करके प्रदर्शित करें , इसे सॉर्ट विधि का उपयोग करके सॉर्ट करें, और फिर इसमें कुछ संख्या खोजें।

class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; // Declare and initialize the array
        System.out.println(array); // Try to display our array without using the toString method — the result is a hexadecimal number
        System.out.println(Arrays.toString(array)); // Display the array correctly 
        Arrays.sort(array, 0, 4); // Sort the entire array from the zeroth to the fourth element
        System.out.println(Arrays.toString(array)); // Display the sorted array
        int key = Arrays.binarySearch(array, 5); // Look for the number 5 in the sorted array. 
        // The binarySearch method will return the index of the array element we are searching for
        System.out.println(key); // Display the index of the number we searched for 
System.out.println(Arrays.binarySearch(array, 0)); // Now try to find a number that isn't in the array, 
        // and immediately display the result

    }
}
आउटपुट:

[I@1540e19d 
[1, 5, 4, 3, 7] 
[1, 3, 4, 5, 7] 
3 
-1
पहली स्ट्रिंग toString का उपयोग किए बिना सरणी प्रदर्शित करने का प्रयास है । दूसरा toString का उपयोग करके प्रदर्शित सरणी है । तीसरा क्रमबद्ध सरणी है। चौथा उस संख्या का सूचकांक है जिसे हमने क्रमबद्ध सरणी में (5) खोजा था (याद रखें कि हम शून्य से गिनती करते हैं, इसलिए सरणी के चौथे तत्व का सूचकांक 3 है)। पाँचवीं कड़ी में, हम -1 देखते हैं। यह एक अमान्य सरणी अनुक्रमणिका है। यह संकेत देता है कि हमने जिस संख्या की खोज की है (इस मामले में, 0) सरणी में नहीं है।

ऐरे क्लास में विधियों के बारे में अधिक जानकारी

Arrays वर्ग और इसका उपयोग - यह लेख Array वर्ग में कुछ विधियों का वर्णन करता है
Arrays वर्ग में Arrays के साथ काम करने के लिए 18 महत्वपूर्ण तरीके हैं I

सार संक्षेप में

  • एक सरणी की आवश्यक विशेषताएं: इसमें रखे गए डेटा का प्रकार, इसका नाम और इसकी लंबाई।
    अंतिम संपत्ति निर्धारित की जाती है जब सरणी बनाई जाती है (जब सरणी के लिए स्मृति आवंटित की जाती है)। सरणी घोषित होने पर पहले दो गुण निर्धारित होते हैं।

  • सरणी आकार (कोशिकाओं की संख्या) एक int होना चाहिए

  • किसी सरणी के बनने के बाद उसकी लंबाई को बदलना असंभव है।

  • एक सरणी तत्व को उसके सूचकांक द्वारा एक्सेस किया जा सकता है।

  • सरणियों में तत्व, जावा में सब कुछ की तरह, शून्य से शुरू होते हैं।

  • एक सरणी बनने के बाद, यह डिफ़ॉल्ट मानों से भर जाता है।

  • Java में Arrays C++ में array के समान नहीं हैं। वे लगभग डायनेमिक सरणियों के संकेत की तरह हैं।

सरणियों के बारे में उपयोगी सामग्री

सरणियों के बारे में अधिक जानना चाहते हैं? नीचे दिए गए लेख देखें। इस विषय पर बहुत सी रोचक और उपयोगी सामग्री शामिल है।
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION