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

Java में Array कॉपी करने के 4 तरीके

Java Arrays

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

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

Java Arrays

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

Arrays तब उपयोगी होते हैं जब आप कई समान मानों के साथ काम करना चाहते हैं क्योंकि आप उन सभी को एक संग्रह में स्टोर कर सकते हैं। यह आपको अपने कोड को संक्षिप्त करने और समान मानों पर एक ही समय में समान मेथड्स चलाने की अनुमति देता है।

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

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

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

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

अब जब हमने Java arrays की मूल बातें देख ली हैं, तो हम उन मेथड्स पर चर्चा कर सकते हैं जिनका उपयोग आप अपने array की सामग्री को कॉपी करने के लिए कर सकते हैं।

Assignment Operator का उपयोग करके Array कॉपी करें

array को कॉपी करने के लिए उपयोग किए जाने वाले सबसे आम क्लोन मेथड्स में से एक assignment operator का उपयोग करना है। 

Assignment operator का उपयोग array को मान असाइन करने के लिए किया जाता है। Assignment operator का उपयोग करके, हम मौजूदा array की सामग्री को नए वेरिएबल में असाइन कर सकते हैं, जो हमारे मौजूदा array की कॉपी बनाएगा।

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

class CopyAssignment { public static void main(String[] args) { String[] coffees = {"Espresso", "Mocha", "Latte", "Cappuccino", "Pour Over", "Flat White"}; String[] summer_coffees = coffees; for (String c: summer_coffees) { System.out.print(c + ","); } } } 

हमारा कोड निम्न आउटपुट देता है:

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

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

अगली लाइन पर, हम assignment operator का उपयोग करके coffees के मान को summer_coffees नामक नए array में असाइन करते हैं। फिर हम "for-each" लूप बनाते हैं जो summer_coffees array में हर आइटम के माध्यम से पुनरावृति करता है और इसे कंसोल पर प्रिंट करता है।

इस मेथड का एक नुकसान है: यदि आप एक array के एलिमेंट्स बदलते हैं, तो दूसरा array भी बदल जाएगा। इसलिए यदि हम अपने summer_coffees लिस्ट में Latte का मान Summer Latte में बदलते हैं, तो हमारी coffees लिस्ट भी बदल जाएगी।

Arrays कॉपी करने के लिए Loop

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

हालांकि, हमें अक्सर deep copy बनाने की आवश्यकता होती है। Deep copies मौजूदा ऑब्जेक्ट से मान कॉपी करते हैं और एक नया array ऑब्जेक्ट बनाते हैं। जब आप deep copy बनाते हैं, तो आप मूल को प्रभावित किए बिना अपने नए array को बदल सकते हैं।

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

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

यहाँ वह कोड है जिसका उपयोग हम for लूप का उपयोग करके deep copy बनाने के लिए करेंगे:

import java.util.Arrays; class LoopCopy { public static void main(String[] args) { String[] coffees = {"Espresso", "Mocha", "Latte", "Cappuccino", "Pour Over", "Flat White"}; String[] summer_coffees = new String[6]; for (int i = 0; i < coffees.length; ++i) { summer_coffees[i] = coffees[i]; } System.out.println(Arrays.toString(summer_coffees)); } } 

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

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

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

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

copyOfRange() Java मेथड्स का उपयोग

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

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

आइए copyOfRange() मेथड के सिंटैक्स को समझते हैं:

  1. DataType वह डेटा टाइप है जो नया array स्टोर करेगा।
  2. newArray नए array का नाम है।
  3. oldArray वह array है जिसके मान आप newArray में कॉपी करना चाहते हैं।
  4. indexPos वह स्थिति है जिस पर कॉपी ऑपरेशन oldArray में शुरू होना चाहिए।
  5. length वह मानों की संख्या है जिन्हें oldArray से newArray में कॉपी किया जाना चाहिए।

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

import java.util.Arrays; class CopyUsingRange { public static void main(String[] args) { String[] coffees = {"Espresso", "Mocha", "Latte", "Cappuccino", "Pour Over", "Flat White"}; String[] summer_coffees = Arrays.copyOfRange(coffees, 0, coffees.length); System.out.println("Summer coffees: " + Arrays.toString(summer_coffees)); } } 

हमारा कोड निम्न आउटपुट देता है:

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

आइए अपने कोड को समझते हैं:

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

अब हमने अपने coffees लिस्ट की कॉपी summer_coffees नाम से बनाई है।

arraycopy() Java मेथड्स का उपयोग

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

यहाँ arraycopy() मेथड का सिंटैक्स है:

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

आइए इस मेथड को समझते हैं। copyarray() पांच पैरामीटर्स स्वीकार करता है:

  • sourceArray वह array का नाम है जिसे आप कॉपी करना चाहते हैं।
  • startingPos वह इंडेक्स स्थिति है जिससे आप source_array में मान कॉपी करना शुरू करना चाहते हैं।
  • newArray नए array का नाम है जहां मान कॉपी किए जाएंगे।
  • newArrayStartingPos वह इंडेक्स स्थिति है जिस पर कॉपी किए गए मान जोड़े जाने चाहिए।
  • length वह तत्वों की संख्या है जिन्हें आप new_array में कॉपी करना चाहते हैं।

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

import java.util.Arrays; class ArrayCopyMethod { public static void main(String[] args) { String[] coffees = {"Espresso", "Mocha", "Latte", "Cappuccino", "Pour Over", "Flat White"}; String[] summer_coffees = new String[6]; System.arraycopy(coffees, 0, summer_coffees, 0, coffees.length); System.out.println("Summer coffees: " + Arrays.toString(summer_coffees)); } } 

हमारा कोड निम्न आउटपुट देता है:

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

आइए अपने कोड को चरण-दर-चरण समझते हैं:

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

निष्कर्ष

लिस्ट के साथ काम करते समय array कॉपी करना एक सामान्य ऑपरेशन है। इस ट्यूटोरियल ने उन चार तरीकों का पता लगाया जिनसे आप Java में array कॉपी कर सकते हैं।

पहले, हमने चर्चा की कि assignment operator का उपयोग करके shallow copy कैसे बनाएं, फिर हमने for लूप का उपयोग करके deep copy बनाने का तरीका समझाया। फिर हमने copyOfRange() मेथड का उपयोग करके array की कॉपी बनाने का तरीका देखा, और कैसे arraycopy() सिस्टम मेथड का उपयोग array कॉपी करने के लिए किया जाता है।

अब आप प्रोफेशनल की तरह Java में arrays कॉपी करना शुरू करने के लिए तैयार हैं!

  1. JavaScript में सरणी खाली करने के तरीकों की संख्या JavaScript में सरणी खाली करने के तरीकों की संख्या

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

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

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

  1. - Java गाइड: List को Array में बदलें (और वापस) toArray() और Arrays.asList() के साथ

    List और Array के बीच बदलना Java में एक बहुत ही सामान्य ऑपरेशन है। Java में List को Array में बदलने का सबसे अच्छा और आसान तरीका .toArray() मेथड का उपयोग करना है। इसी तरह, हम Arrays.asList() मेथड का उपयोग करके Array को वापस List में बदल सकते हैं। नीचे दिए गए उदाहरण दिखाते हैं कि List of String और List