1. Arrays
वर्ग
जैसा कि हमने पहले उल्लेख किया है, सरणियाँ बहुत उपयोगी हैं और अक्सर प्रोग्रामिंग में उपयोग की जाती हैं।
जावा के रचनाकारों ने बहुत जल्दी देखा कि सरणियों के साथ काम करते समय जावा प्रोग्रामर अक्सर एक ही कोड लिखते हैं। उदाहरण के लिए, एक सरणी के भाग को दूसरे सरणी में कॉपी करें, एक सरणी के प्रत्येक सेल को समान मान से भरने के लिए कोड, एक सुविधाजनक प्रारूप में एक सरणी की सामग्री प्रदर्शित करें, आदि।
इसलिए उन्होंने विशेष Arrays
वर्ग (इसका पूरा नाम है java.util.Arrays
) बनाया, इसमें सबसे लोकप्रिय सरणी-संबंधित क्रियाएं डालीं।
प्रत्येक अवसर के लिए इसकी बहुत सी विधियाँ हैं, लेकिन पहले हम उनमें से केवल 10 पर विचार करेंगे — सबसे सरल और अक्सर उपयोग की जाने वाली विधियाँ।
2.Arrays.toString()
पहली विधि जिसे हम देखेंगे उसे कहा जाता है Arrays.toString()
। लेकिन पहले, थोड़ी पृष्ठभूमि।
जावा में प्रत्येक सरणी में एक toString()
विधि होती है, जो 'सरणी का शाब्दिक प्रतिनिधित्व' लौटाती है। आप निम्नलिखित कथन का उपयोग करके किसी सरणी का पाठपरक प्रतिनिधित्व प्राप्त कर सकते हैं:
String str = name.toString();
जहां name
सरणी चर का नाम है, और str
उस चर का नाम है जो सरणी के स्ट्रिंग प्रतिनिधित्व को संग्रहीत करेगा।
लेकिन अगर आप विधि का उपयोग करके सरणी को स्क्रीन पर प्रिंट करने का प्रयास करते हैं , तो आपको सबसे अधिक संभावना कुछ इस तरह दिखाई देगी:System.out.println(name)
I@37afeb11
पहले अक्षर का I
मतलब है कि यह एक int
सरणी है, और उसके बाद के प्रतीक@
स्मृति में सरणी का पता हैं। एक ओर, यह वास्तव में सरणी चर में संग्रहीत जानकारी है, लेकिन दूसरी ओर, हम कुछ अलग होने की उम्मीद करते हैं, है ना?
हम सरणी में मान देखना चाहते थे! और यही कारण है कि वे विधि के साथ आए Arrays.toString()
- एक सरणी के मान प्रदर्शित करने के लिए। हम इसे इस प्रकार कहते हैं:
String str = Arrays.toString(name);
उदाहरण:
|
चर str में स्ट्रिंग होगी:
|
|
चर str में स्ट्रिंग होगी:
|
|
चर str में स्ट्रिंग होगी:
|
3.Arrays.deepToString()
लेकिन यदि आप द्वि-आयामी सरणी को एक स्ट्रिंग (इसे प्रदर्शित करने के लिए) using the Arrays.toString()
विधि में बदलने का प्रयास करते हैं, तो आप कुछ परिचित देखेंगे:
[I@37afeb11, I@37afeb21, I@37afeb31]
यह सब इसलिए है क्योंकि द्वि-आयामी सरणी की कोशिकाएँ एक-आयामी सरणियों को संदर्भित करती हैं। और एक आयामी सरणियों को एक स्ट्रिंग में कैसे बदला जाता है? ठीक वैसा ही जैसा आप ऊपर देख रहे हैं।
क्या किया जा सकता है? हम द्वि-आयामी सरणी को सही ढंग से कैसे प्रदर्शित करते हैं?
इसके लिए, Arrays
वर्ग की एक और विशेष विधि है - deepToString()
. इसे कॉल करना ऐसा दिखता है:
String str = Arrays.deepToString(name);
इस पद्धति को सरणियों को पारित किया जा सकता है जो द्वि-आयामी, एक-आयामी, त्रि-आयामी या सामान्य रूप से, किसी भी आयाम में हैं, और यह हमेशा सरणी के तत्वों को प्रदर्शित करेगा।
नोट: विधि Arrays.deepToString()
आदिम के एक आयामी सरणियों के साथ काम नहीं करती है (उदाहरण के लिए, int[]
)।
उदाहरण:
|
चर str में स्ट्रिंग होगी:
|
|
चर str में स्ट्रिंग होगी:
|
|
चर str में स्ट्रिंग होगी:
|
4.Arrays.equals()
हमने यह पता लगाया कि स्क्रीन पर सरणियों को कैसे प्रदर्शित किया जाए, लेकिन सरणियों की तुलना करने के बारे में क्या?
तार की तुलना करने के लिए, हमारे पास equals
और equalsIgnoreCase
विधियाँ हैं, लेकिन सरणियों में क्या विधियाँ हैं?
अच्छी खबर यह है कि सरणियों में एक equals
विधि होती है। बुरी खबर यह है कि यह सरणियों की सामग्री की तुलना नहीं करता है। सरणियों की विधि ऑपरेटर equals
के समान ही काम करती है ==
- यह संदर्भों की तुलना करती है। उदाहरण:
उदाहरण:
|
false (संदर्भ बराबर नहीं हैं) |
|
equals की विधि केवल arrays दो सरणियों के संदर्भों की तुलना करती है। false (संदर्भ बराबर नहीं हैं) |
क्या किया जा सकता है? हम उनकी सामग्री के आधार पर सरणियों की तुलना कैसे करते हैं?
और फिर से Arrays
हमारे बचाव में आता है, या अधिक विशेष रूप से, इसकी Arrays.equals()
विधि। हम इसे इस प्रकार कहते हैं:
Arrays.equals(name1, name2)
विधि वापस आती है true
यदि सरणियाँ समान लंबाई की हों और उनके तत्व समान हों। अन्यथा, यह वापस आ जाता है false
।
उदाहरण:
|
equals की विधि केवल arrays दो सरणियों के संदर्भों की तुलना करती है। false (संदर्भ बराबर नहीं हैं) |
|
true (सामग्री बराबर हैं) |
|
false (सरणी की सामग्री अलग हैं) |
5.Arrays.deepEquals()
और, जैसा कि आप शायद पहले ही अनुमान लगा चुके हैं, Arrays.equals
विधि द्वि-आयामी सरणियों के लिए सही ढंग से काम नहीं करेगी: यह दो-आयामी सरणियों को एक-आयामी सरणी की तरह व्यवहार करती है जिनके तत्व एक-आयामी सरणियों के पते हैं।
इस प्रकार, बहुआयामी सरणियों ( ) की सही तुलना करने के लिए , वे विधि n = 1, 2, 3,...
के साथ आए । Arrays.deepEquals()
इसे कॉल करना ऐसा दिखता है:
Arrays.deepEquals(name1, name2)
विधि लौटती हैtrue
यदि सरणियाँ समान लंबाई की हैं और उनके तत्व समान हैं। नहीं तो लौट आता हैfalse
. यदि सरणी के अंदर के तत्व भी सरणियाँ हैं, तो Arrays.deepEquals()
उनकी तुलना करने के लिए विधि का उपयोग किया जाता है, और इसी तरह।
उदाहरण:
|
equals की विधि केवल arrays दो सरणियों के संदर्भों की तुलना करती है। false (संदर्भ बराबर नहीं हैं) |
|
विधि Arrays.equals तुलना और संदर्भों को संग्रहीत करने वाले एक-आयामी सरणियों के रूप में करेगी। उनमें अलग-अलग संदर्भ हैं। (सरणियों की सामग्री बराबर नहीं हैं) x1 x2 false |
|
true (सामग्री बराबर हैं) |