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 की कॉपी बनाई है। आइए चरण-दर-चरण समझाते हैं कि यह कैसे काम करता है:
- हम
java.util.Arraysआयात करते हैं जिसमें toString() मेथड शामिल है, जिसका उपयोग हम उदाहरण के अंत में अपने array को कंसोल पर प्रिंट करने के लिए करेंगे। - हम
coffeesनामक एक array घोषित करते हैं जो हमारे स्टैंडर्ड मेनू पर कॉफी की सूची स्टोर करता है। - हम
summer_coffeesनामक एक array इनिशियलाइज़ करते हैं जो छह मान स्टोर करेगा। - हम
coffeesलिस्ट में हर आइटम के माध्यम से पुनरावृति करने के लिए for लूप का उपयोग करते हैं। - हर बार जब for लूप चलता है, तो
summer_coffeesमें इंडेक्स मानiपर आइटम कोcoffeesमें इंडेक्स मानiपर आइटम असाइन किया जाएगा। - हम 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() मेथड के सिंटैक्स को समझते हैं:
- DataType वह डेटा टाइप है जो नया array स्टोर करेगा।
- newArray नए array का नाम है।
- oldArray वह array है जिसके मान आप
newArrayमें कॉपी करना चाहते हैं। - indexPos वह स्थिति है जिस पर कॉपी ऑपरेशन
oldArrayमें शुरू होना चाहिए। - 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]
आइए अपने कोड को समझते हैं:
- हम
java.util.Arraysलाइब्रेरी आयात करते हैं जिसमें copyOfRange() और toString() मेथड्स स्टोर हैं जिनका हम अपने उदाहरण में उपयोग करेंगे। - हम
coffeesनामक एक array घोषित करते हैं जो हमारे स्टैंडर्ड मेनू पर कॉफी स्टोर करता है। - हम
summer_coffeesनामक एक array घोषित करते हैं औरcoffeesarray की कॉपी बनाने के लिए copyOfRange() मेथड का उपयोग करते हैं। हमारे द्वारा निर्दिष्ट पैरामीटर्स निम्नानुसार हैं:- coffees वह array का नाम है जिसे हम कॉपी करना चाहते हैं।
- निर्दिष्ट करता है कि हम
coffeesarray से इंडेक्स स्थिति 0 से मान कॉपी करना शुरू करना चाहते हैं। - coffees.length निर्दिष्ट करता है कि हम लिस्ट में हर मान कॉपी करना चाहते हैं।
- हम कंसोल पर "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]
आइए अपने कोड को चरण-दर-चरण समझते हैं:
- हम अपने प्रोग्राम की शुरुआत में
java.util.Arraysपैकेज आयात करते हैं। इसमें toString() मेथड शामिल है जिसका उपयोग हम अपने प्रोग्राम के अंत में बनाने वाली array कॉपी को प्रिंट करने के लिए करेंगे। - हम
coffeesनामक एक array घोषित करते हैं जो हमारे स्टैंडर्ड मेनू पर कॉफी स्टोर करता है। - हम
summer_coffeesनामक एक array इनिशियलाइज़ करते हैं जो 6 मान रखेगा। - हम अपने
coffeesarray की कॉपी बनाने के लिए arraycopy() का उपयोग करते हैं। यहाँ वे पैरामीटर्स हैं जो हम निर्दिष्ट करते हैं:- coffees वह array है जिसे हम कॉपी करना चाहते हैं।
- वह स्थिति है जिस पर हम
coffeesarray में अपनी कॉपी शुरू करना चाहते हैं। - summer_coffees वह array है जिसमें हम अपने कॉपी किए गए मान जोड़ना चाहते हैं।
- वह स्थिति है जिस पर हम
summer_coffeesarray में कॉपी किए गए मान शुरू करना चाहते हैं। - coffees.length वह array एलिमेंट्स की संख्या है जिन्हें हम कॉपी करना चाहते हैं। इस मामले में,
coffees.lengthका उपयोग करने से हमcoffeesलिस्ट से हर एलिमेंट कॉपी कर सकते हैं।
- हम "Summer coffees: " संदेश प्रिंट करते हैं, जिसके बाद हमारे द्वारा बनाई गई समर कॉफी की सूची होती है।
निष्कर्ष
लिस्ट के साथ काम करते समय array कॉपी करना एक सामान्य ऑपरेशन है। इस ट्यूटोरियल ने उन चार तरीकों का पता लगाया जिनसे आप Java में array कॉपी कर सकते हैं।
पहले, हमने चर्चा की कि assignment operator का उपयोग करके shallow copy कैसे बनाएं, फिर हमने for लूप का उपयोग करके deep copy बनाने का तरीका समझाया। फिर हमने copyOfRange() मेथड का उपयोग करके array की कॉपी बनाने का तरीका देखा, और कैसे arraycopy() सिस्टम मेथड का उपयोग array कॉपी करने के लिए किया जाता है।
अब आप प्रोफेशनल की तरह Java में arrays कॉपी करना शुरू करने के लिए तैयार हैं!