Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा में एक ऐरे को कॉपी करने के 4 तरीके

जब आप जावा में सरणियों के साथ काम कर रहे हों, तो आप यह तय कर सकते हैं कि आप एक सरणी की एक प्रति बनाना चाहते हैं। उदाहरण के लिए, यदि आप एक कॉफी शॉप चला रहे हैं और एक मौसमी मेनू बनाना चाहते हैं, तो आप अपने मूल मेनू की एक प्रति बनाना चाह सकते हैं, जिस पर नया मेनू आधारित हो सकता है।

जावा में, ऐसे कई तरीके हैं जिनसे आप किसी ऐरे को कॉपी कर सकते हैं। यह ट्यूटोरियल सरणियों को कॉपी करने के लिए चार सामान्य तरीकों का पता लगाएगा और चर्चा करेगा कि वे लाइन-बाय-लाइन कैसे काम करते हैं। इस ट्यूटोरियल को पढ़ने के बाद, आप जावा में सरणियों को कॉपी करने में माहिर होंगे।

जावा सरणी

जावा में, एक सरणी एक कंटेनर होता है जिसमें एक ही प्रकार के मान होते हैं। उदाहरण के लिए, एक सरणी का उपयोग पुस्तकों की सूची को संग्रहीत करने के लिए किया जा सकता है, या खिलाड़ियों द्वारा डार्ट्स के खेल में अर्जित स्कोर की सूची को संग्रहीत करने के लिए इस्तेमाल किया जा सकता है।

जब आप कई समान मूल्यों के साथ काम करना चाहते हैं तो सरणियाँ उपयोगी होती हैं क्योंकि आप उन सभी को एक संग्रह में संग्रहीत कर सकते हैं। यह आपको अपने कोड को संघनित करने और एक ही समय में समान मूल्यों पर समान विधियों को चलाने की अनुमति देता है।

मान लीजिए कि हम एक ऐरे बनाना चाहते हैं जो हमारे कॉफ़ीशॉप में बेचे जाने वाले कॉफ़ी को स्टोर करता है। हम इस कोड का उपयोग करके ऐसा कर सकते हैं:

String[] coffees = {“Espresso”, “Mocha”, “Latte”, “Cappuccino”, “Pour Over”, “Flat White”};

इस उदाहरण में, हम coffees . नामक एक सरणी घोषित करते हैं जो स्ट्रिंग मान संग्रहीत करता है। हमारे सरणी में छह मान हैं।

किसी सरणी में प्रत्येक आइटम को 0 से शुरू होने वाली एक अनुक्रमणिका संख्या असाइन की जाती है, जिसका उपयोग किसी सरणी में व्यक्तिगत रूप से आइटम को संदर्भित करने के लिए किया जा सकता है।

81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।

बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।

अब जब हमने जावा सरणियों की मूल बातें खोज ली हैं, तो हम उन विधियों पर चर्चा कर सकते हैं जिनका उपयोग आप अपने सरणी की सामग्री की प्रतिलिपि बनाने के लिए कर सकते हैं।

असाइनमेंट ऑपरेटर का उपयोग करके सरणी को कॉपी करें

किसी सरणी को कॉपी करने के लिए उपयोग की जाने वाली सबसे आम क्लोन विधियों में से एक असाइनमेंट ऑपरेटर का उपयोग करना है।

असाइनमेंट ऑपरेटर का उपयोग किसी सरणी को मान निर्दिष्ट करने के लिए किया जाता है। असाइनमेंट ऑपरेटर का उपयोग करके, हम मौजूदा सरणी की सामग्री को एक नए चर के लिए असाइन कर सकते हैं, जो हमारे मौजूदा सरणी की एक प्रति बनाएगा।

चलो कॉफ़ीशॉप पर लौटते हैं। मान लीजिए हम coffees . की एक कॉपी बनाना चाहते हैं सरणी जिस पर हम अपने ग्रीष्मकालीन कॉफी मेनू को आधार बनाएंगे। हम इस कोड का उपयोग सरणी की एक प्रति बनाने के लिए कर सकते हैं:

 क्लास कॉपीअसाइनमेंट {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {स्ट्रिंग [] कॉफी ={"एस्प्रेसो", "मोचा", "लट्टे", "कैप्पुकिनो", "पोर ओवर", "फ्लैट व्हाइट"}; स्ट्रिंग [] ग्रीष्म_कॉफ़ी =कॉफ़ी; के लिए (स्ट्रिंग सी:ग्रीष्म_कॉफ़ी) {System.out.print(c + ","); } }}

हमारा कोड लौटाता है:

Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White,

आइए हमारे कोड को तोड़ दें। हमारे CopyAssignment वर्ग के अंदर कोड की पहली पंक्ति पर, हम coffees नामक एक सरणी घोषित करते हैं जो हमारे मानक कॉफी मेनू को संग्रहीत करता है।

अगली पंक्ति में, हम असाइनमेंट ऑपरेटर का उपयोग coffees . का मान निर्दिष्ट करने के लिए करते हैं summer_coffees . नामक एक नई सरणी के लिए . फिर हम एक "प्रत्येक के लिए" लूप बनाते हैं जो summer_coffees में प्रत्येक आइटम के माध्यम से पुनरावृत्त होता है सरणी और इसे कंसोल पर प्रिंट करता है।

इस पद्धति का उपयोग करने में एक खामी है:यदि आप एक सरणी के तत्वों को बदलते हैं, तो दूसरी सरणी भी बदल जाएगी। तो अगर हमने Latte . का मान बदल दिया है करने के लिए Summer Latte हमारे summer_coffees . में सूची, हमारी coffees सूची में भी बदलाव किया जाएगा।

लूप टू कॉपी Arrays

एक सरणी को कॉपी करने के लिए हमने जिस पहले दृष्टिकोण पर चर्चा की - असाइनमेंट ऑपरेटर का उपयोग करके - वह बनाता है जिसे shallow copy. ऐसा इसलिए है क्योंकि हमने एक मौजूदा सरणी ऑब्जेक्ट को एक नया असाइन किया है, जिसका अर्थ है कि जब हम किसी ऑब्जेक्ट को बदलते हैं, तो वे दोनों बदल जाएंगे - दो ऑब्जेक्ट जुड़े हुए हैं।

हालाँकि, हमें अक्सर एक गहरी प्रतिलिपि बनाने की आवश्यकता होती है। डीप कॉपी किसी मौजूदा ऑब्जेक्ट से मानों की प्रतिलिपि बनाते हैं और एक नई सरणी ऑब्जेक्ट बनाते हैं। जब आप एक गहरी प्रतिलिपि बनाते हैं, तो आप मूल सरणी को प्रभावित किए बिना अपनी नई सरणी बदल सकते हैं।

एक दृष्टिकोण जिसका उपयोग गहरी प्रतिलिपि बनाने के लिए किया जा सकता है, वह है for . बनाना लूप जो एक सरणी की सामग्री के माध्यम से पुनरावृत्त होता है और एक नई सरणी बनाता है।

मान लीजिए हम अपने coffees . की एक गहरी प्रतिलिपि बनाना चाहते हैं सरणी जिसे summer_coffees. . कहा जाता है इसकी एक गहरी प्रतिलिपि की आवश्यकता है क्योंकि हम summer_coffees की सामग्री को बदलने की योजना बना रहे हैं नई कॉफी को प्रतिबिंबित करने के लिए सरणी जो हम गर्मियों के महीनों में पेश करेंगे।

यहां वह कोड है जिसका उपयोग हम for . का उपयोग करके एक गहरी प्रतिलिपि बनाने के लिए करेंगे कुंडली:

आयात करें , "समतल सफेद"}; स्ट्रिंग [] ग्रीष्म_कॉफ़ी =नया स्ट्रिंग [6]; के लिए (int i =0; i <कॉफ़ी.लेंथ; ++i) {summer_coffees[i] =Coffee[i]; } System.out.println (Arrays.toString (summer_coffees)); }}

जब हम अपना कोड चलाते हैं, तो आउटपुट निम्नानुसार होता है:

[Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

जैसा कि आप देख सकते हैं, हमारे कोड ने हमारे मूल सरणी की एक प्रति बनाई है। आइए बताते हैं कि यह चरण-दर-चरण कैसे काम करता है:

  1. हम आयात करते हैं java.util.Arrays जिसमें toString() विधि शामिल है, हम उदाहरण के अंत में अपने सरणी को कंसोल पर प्रिंट करने के लिए उपयोग करेंगे।
  1. हम coffees नामक एक सरणी घोषित करते हैं जो हमारे मानक मेनू पर कॉफी की सूची संग्रहीत करता है।
  2. हम summer_coffees नामक एक ऐरे को इनिशियलाइज़ करते हैं जो छह मान संग्रहीत करेगा।
  3. हम coffees में प्रत्येक आइटम के माध्यम से पुनरावृति करने के लिए लूप के लिए उपयोग करते हैं सूची।
  4. हर बार लूप के लिए, इंडेक्स वैल्यू पर आइटम i गर्मियों में_कॉफ़ी को आइटम को इंडेक्स वैल्यू i . पर असाइन किया जाएगा कॉफी में।
  5. हम summer_coffees को बदलने के लिए Arrays.toString() का उपयोग करते हैं एक स्ट्रिंग के लिए, फिर कंसोल पर हमारे कॉपी किए गए तत्वों के साथ नई सरणी का प्रिंट आउट लें।

copyOfRange() जावा विधियों का उपयोग करना

Java copyOfRange() मेथड का उपयोग Arrays.copyOfRange() को कॉपी करने के लिए किया जाता है, जो java.util.Arrays क्लास का हिस्सा है। यहाँ copyOfRange () विधि का सिंटैक्स दिया गया है:

import java.util.arrays;DataType[] newArray =Arrays.copyOfRange(oldArray, indexPos, length);

आइए copyOfRange () विधि के सिंटैक्स को तोड़ें:

  1. डेटा प्रकार डेटा का प्रकार है जिसे नई सरणी संग्रहित करेगी।
  2. newArray नई सरणी का नाम है।
  3. पुराना ऐरे वह सरणी है जिसके मूल्यों को आप newArray . पर कॉपी करना चाहते हैं ।
  4. अनुक्रमणिका स्थिति वह स्थिति है जिस पर oldArray . में कॉपी ऑपरेशन शुरू होना चाहिए ।
  5. लंबाई oldArray . से कॉपी किए जाने वाले मानों की संख्या है करने के लिए newArray

कार्रवाई में copyOfRange () विधि को प्रदर्शित करने के लिए एक उदाहरण के माध्यम से चलते हैं। मान लें कि हम अपने coffees . की एक कॉपी बनाना चाहते हैं पहले से सरणी। हम इस कोड का उपयोग करके ऐसा कर सकते हैं:

आयात करें , "समतल सफेद"}; स्ट्रिंग [] ग्रीष्म_कॉफ़ी =Arrays.copyOfRange (कॉफ़ी, 0, कॉफ़ी। लंबाई); System.out.println ("समर कॉफ़ी:" + Arrays.toString(summer_coffees)); }}

हमारा कोड लौटाता है:

Summer coffees: [Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

आइए हमारे कोड को तोड़ दें:

  1. हम java.util.Arrays आयात करते हैं पुस्तकालय जो copyOfRange() और toString() विधियों को संग्रहीत करता है जिनका उपयोग हम अपने उदाहरण में करेंगे।
  2. हम coffees नामक एक सरणी घोषित करते हैं जो कॉफी को हमारे मानक मेनू पर संग्रहीत करता है।
  3. हम summer_coffees नामक एक सरणी घोषित करते हैं और coffees . की प्रतिलिपि बनाने के लिए copyOfRange() विधि का उपयोग करें सरणी। हमारे द्वारा निर्दिष्ट पैरामीटर इस प्रकार हैं:
    1. कॉफी उस सरणी का नाम है जिसे हम कॉपी करना चाहते हैं।
    2. निर्दिष्ट करता है कि हम coffees . से अनुक्रमणिका स्थिति 0 से शुरू होने वाले मानों को कॉपी करना चाहते हैं सरणी।
    3. कॉफ़ी लंबाई निर्दिष्ट करता है कि हम सूची में प्रत्येक मान की प्रतिलिपि बनाना चाहते हैं।
  4. हम "ग्रीष्मकालीन कॉफी:" प्रिंट करते हैं, जिसके बाद परिणामी सरणी summer_coffees आती है। कंसोल के लिए।

अब हमने अपनी “coffees . की एक कॉपी बना ली है summer_coffees . नाम की सूची .

सरणी प्रति () जावा विधियों का उपयोग करना

एरेकॉपी () विधि का उपयोग डेटा को एक सरणी से दूसरे सरणी में कॉपी करने के लिए किया जाता है। एरेकॉपी () विधि सिस्टम क्लास का हिस्सा है और इसमें कई विकल्प शामिल हैं जो आपको मौजूदा एरे की कॉपी को कस्टमाइज़ करने की अनुमति देते हैं।

यहाँ arraycopy () विधि का सिंटैक्स है:

System.arraycopy(sourceArray, startingPos, newArray, newArrayStartingPos, length);

आइए इस विधि को तोड़ दें। copyarray () पाँच मापदंडों को स्वीकार करता है:

  • स्रोतअरे उस सरणी का नाम है जिसे आप कॉपी करना चाहते हैं।
  • शुरुआती स्थिति वह अनुक्रमणिका स्थिति है जिससे आप source_array . में मानों की प्रतिलिपि बनाना प्रारंभ करना चाहते हैं ।
  • newArray नई सरणी का नाम है जहां मान कॉपी होंगे।
  • newArrayStartingPos वह सूचकांक स्थिति है जिस पर कॉपी किए गए मान जोड़े जाने चाहिए।
  • लंबाई उन तत्वों की संख्या है जिन्हें आप new_array . में कॉपी करना चाहते हैं ।

चलो कॉफ़ीशॉप पर लौटते हैं। मान लीजिए हम अपने coffees . में हर मान को कॉपी करना चाहते हैं summer_coffees . नामक एक नई सरणी के लिए सरणी . हम इस कोड का उपयोग करके ऐसा कर सकते हैं:

आयात करें , "समतल सफेद"}; स्ट्रिंग [] ग्रीष्म_कॉफ़ी =नया स्ट्रिंग [6]; System.arraycopy(कॉफी, 0, ग्रीष्म_कॉफी, 0, कॉफी। लंबाई); System.out.println ("समर कॉफ़ी:" + Arrays.toString(summer_coffees)); }}

हमारा कोड लौटाता है:

Summer coffees: [Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

आइए हमारे कोड को चरण-दर-चरण तोड़ें:

  1. हम java.util.Arrays आयात करते हैं हमारे कार्यक्रम की शुरुआत में पैकेज। इसमें toString() विधि शामिल है जिसका उपयोग हम अपने प्रोग्राम के अंत में बनाई गई सरणी कॉपी को प्रिंट करने के लिए करेंगे।
  2. हम coffees नामक एक सरणी घोषित करते हैं जो कॉफी को हमारे मानक मेनू पर संग्रहीत करता है।
  3. हम summer_coffees नामक एक ऐरे को इनिशियलाइज़ करते हैं जिसमें 6 मान होंगे।
  4. हम अपने coffees . की एक कॉपी बनाने के लिए arraycopy() का उपयोग करते हैं सरणी। यहां वे पैरामीटर हैं जो हम निर्दिष्ट करते हैं:
    1. कॉफी वह सरणी है जिसे हम कॉपी करना चाहते हैं।
    2. वह स्थिति है जिस पर हम चाहते हैं कि हमारी कॉपी coffees . में शुरू हो सरणी।
    3. समर_कॉफ़ी वह सरणी है जिसमें हम चाहते हैं कि हमारे कॉपी किए गए मान जोड़े जाएं।
    4. वह स्थिति है जिस पर हम चाहते हैं कि कॉपी किए गए मान summer_coffees में जोड़े जाएं सरणी।
    5. कॉफ़ी लंबाई सरणी तत्वों की संख्या है जिसे हम कॉपी करना चाहते हैं। इस मामले में, coffees.length . का उपयोग करके हमें coffees . से प्रत्येक तत्व को कॉपी करने की अनुमति देता है सूची।
  5. हम "ग्रीष्मकालीन कॉफ़ी:" बताते हुए एक संदेश प्रिंट करते हैं, उसके बाद हमारे द्वारा बनाई गई ग्रीष्मकालीन कॉफ़ी की सूची।

निष्कर्ष

जब आप सूचियों के साथ काम कर रहे हों तो किसी सरणी की प्रतिलिपि बनाना एक सामान्य ऑपरेशन है। इस ट्यूटोरियल ने चार तरीकों की खोज की जिसमें आप जावा में एक सरणी की प्रतिलिपि बना सकते हैं।

सबसे पहले, हमने चर्चा की कि असाइनमेंट ऑपरेटर का उपयोग करके एक उथली प्रतिलिपि कैसे बनाई जाए, फिर हम यह समझाने के लिए आगे बढ़े कि for का उपयोग करके एक गहरी प्रतिलिपि कैसे बनाई जाए कुंडली। फिर हमने पता लगाया कि किसी सरणी की प्रतिलिपि बनाने के लिए copyOfRange () विधि का उपयोग कैसे किया जाता है, और किसी सरणी की प्रतिलिपि बनाने के लिए arraycopy () सिस्टम विधि का उपयोग कैसे किया जाता है।

अब आप एक पेशेवर की तरह जावा में सरणियों की प्रतिलिपि बनाना शुरू करने के लिए तैयार हैं!


  1. जावास्क्रिप्ट में किसी सरणी को खाली करने के तरीकों की संख्या

    JavaScript में किसी सरणी को खाली करने के चार तरीके हैं - नई सरणी पर सेट करना - इसमें हम अपने एरे वेरिएबल को एक नए खाली एरे में सेट करते हैं। लंबाई संपत्ति का उपयोग करना − इसमें हम अपने ऐरे की लंबाई प्रॉपर्टी को 0 पर सेट करते हैं। पॉप का उपयोग करना - इसमें हम ऐरे एलीमेंट को तब तक लगातार पॉप करते हैं

  1. जावा में ArrayIndexOutOfBoundsException क्या है?

    एक सरणी एक डेटा है संरचना/कंटेनर/वस्तु जो एक ही प्रकार के तत्वों के एक निश्चित आकार के अनुक्रमिक संग्रह को संग्रहीत करता है। सरणी का आकार/लंबाई निर्माण के समय निर्धारित की जाती है। सरणी में तत्वों की स्थिति को अनुक्रमणिका या सबस्क्रिप्ट कहा जाता है। सरणी का पहला तत्व अनुक्रमणिका 0 पर संग्रहीत है और

  1. जावा में सूची को ऐरे में बदलें

    जावा में लिस्ट और ऐरे के बीच कनवर्ट करना एक बहुत ही सामान्य ऑपरेशन है। जावा में किसी सूची को ऐरे में बदलने का सबसे अच्छा और आसान तरीका .toArray() का उपयोग करना है। विधि। इसी तरह, हम Arrays.asList() . का उपयोग करके किसी सूची को वापस ऐरे में बदल सकते हैं विधि। नीचे दिए गए उदाहरण दिखाते हैं कि कैसे