ArrayList Java में एक ट्रेंडिंग विषय रहा है। वे मानक सरणियों की तुलना में कई अधिक लाभ प्रदान करते हैं। ArrayList आपको वस्तुओं को एक पंक्ति में कुशलतापूर्वक संग्रहीत करने और जब आवश्यक न हो तो उन्हें साफ़ करने की अनुमति देते हैं। वे आपको अपनी सूचियों पर मानक संचालन जैसे सॉर्टिंग और खोज करने में भी मदद करते हैं। यदि आप एक मानक सरणी का उपयोग करते, तो आपको इन संचालन के लिए अपना तर्क लिखना पड़ता, जिसमें अतिरिक्त समय और सावधानी की आवश्यकता होती।
लाभों की लंबी सूची के कारण, ArrayList का उपयोग मामलों की एक विस्तृत श्रृंखला में होता है। हालांकि, एक महत्वपूर्ण ऑपरेशन जो ArrayList के साथ अंतर्निहित नहीं आता है वह है प्रिंटिंग। ArrayList मानक, आदिम डेटा प्रकारों (जैसे पूर्णांक और स्ट्रिंग) से बने हो सकते हैं, या अधिक उन्नत डेटा प्रकारों से, जैसे कस्टम क्लासेस। इनमें से प्रत्येक मामले में, ArrayList प्रिंट करने के लिए अलग-अलग चरणों की आवश्यकता होती है।
इस लेख में, हम Java में ArrayList प्रिंट करने के शीर्ष तीन तरीकों पर एक नज़र डालेंगे, जिसमें हमने ऊपर चर्चा की गई दो प्रकार के ArrayList शामिल हैं। बिना किसी देरी के, शुरू करते हैं!
Java ArrayList प्रिंट करें: तीन तरीके
जैसा कि ऊपर उल्लेख किया गया है, ArrayList दो प्रकार के होते हैं: एक जिसमें आदिम, सरल डेटा प्रकार (जैसे पूर्णांक और फ्लोट) वाली वस्तुएं होती हैं, और दूसरा जिसमें कस्टम क्लासेस के माध्यम से तत्काल की गई वस्तुएं होती हैं। इन दो प्रकार के ArrayList को प्रिंट करने के कई तरीके हैं।
Java में ArrayList प्रिंट करने के ये शीर्ष तीन तरीके हैं:
- for लूप का उपयोग करना
- println कमांड का उपयोग करना
- toString() कार्यान्वयन का उपयोग करना
विधि 1: for लूप का उपयोग करना
for लूप एक सूची या सरणी पर पुनरावृति करने के सबसे सरल तरीकों में से एक है। यह विधि सरल सरणियों और ArrayList दोनों के साथ अच्छा काम करती है, क्योंकि सभी वस्तुओं को एक-एक करके पुनरावृति करने से आप उनमें से प्रत्येक को तदनुसार संभाल सकते हैं।
यह विधि आपको प्रत्येक तत्व के लिए विशिष्ट कार्यान्वयन परिभाषित करने में मदद करती है। for लूप का सिंटैक्स निम्नलिखित है:
for (int i=0; i<arr.size(); i++) { // मान लें कि arr एक ArrayList ऑब्जेक्ट है int current = arr.get(i); // वर्तमान तत्व के साथ यहां कुछ करें }
for लूप उदाहरण
आप ArrayList के सभी तत्वों को केवल प्रिंट करने के लिए for लूप का उपयोग कर सकते हैं:
ArrayList<Integer> arr = new ArrayList<>(); arr.add(3); arr.add(4); arr.add(5); arr.add(6); for (int i=0; i<arr.size(); i++) { int curr = arr.get(i); System.out.println(curr); }
इसे एक स्तर ऊपर ले जाने के लिए, आप किसी भी शर्त के आधार पर प्रत्येक तत्व के लिए विशिष्ट मामले परिभाषित कर सकते हैं:
ArrayList arr = new ArrayList<>(); arr.add(3); arr.add(5l); arr.add("Hello World!"); for (int i=0; i<arr.size(); i++) { if (arr.get(i) instanceof Integer) System.out.println(arr.get(i) + " is a number"); else if (arr.get(i) instanceof String) System.out.println(arr.get(i) + " is a string"); else if (arr.get(i) instanceof Long) System.out.println(arr.get(i) + " is a long"); }
इस विधि का उपयोग कब करें
for लूप उन स्थितियों के लिए सबसे उपयुक्त है जब आपके पास तुलनात्मक रूप से छोटी संख्या में तत्व हों और उनके प्रकार बहुत अधिक भिन्न न हों। यदि आपके पास 20 आइटम की सूची है जो या तो पूर्णांक (int) या स्ट्रिंग हैं, तो for लूप जाने का रास्ता है। यदि आपके पास 100 से अधिक आइटम की सूची है जो स्ट्रिंग, int, बूलियन, या कुछ भी हो सकते हैं, तो for लूप उपयोग करने के लिए बहुत बोझिल होगा।
विधि 2: println कमांड का उपयोग करना
println कमांड का उपयोग सीधे आदिम डेटा प्रकारों का उपयोग करके बने ArrayList के मामले में किया जा सकता है। Java में आदिम डेटा प्रकारों में स्ट्रिंग, पूर्णांक, फ्लोट, लॉन्ग, डबल, और बूलियन शामिल हैं। यदि कोई सूची ऐसे डेटा से बनी है जो इन प्रकारों से मेल नहीं खाता, तो इसे इस विधि का उपयोग करके प्रिंट नहीं किया जा सकता।
इस विधि का सिंटैक्स सरल है:
System.out.println(arr); // मान लें कि arr एक ArrayList ऑब्जेक्ट है
यह विधि काम करती है क्योंकि सभी आदिम डेटा प्रकारों को सीधे मानक आउटपुट डिवाइस पर प्रिंट किया जा सकता है। उन्हें प्रिंट करने योग्य प्रारूप में पार्स करने की आवश्यकता नहीं है। अन्य डेटा, जैसे कि कस्टम क्लास के उदाहरण में संग्रहीत, को println कमांड द्वारा सीधे पार्स नहीं किया जा सकता, इसलिए यह विधि इस मामले में काम नहीं करेगी।
println उदाहरण
यदि आप एक साधारण पूर्णांक ArrayList प्रिंट करने का प्रयास कर रहे हैं, तो यहां बताया गया है कि आप इसे कैसे करेंगे:
ArrayList<Integer> arr = new ArrayList<>(); arr.add(5); arr.add(4); arr.add(6); System.out.println(arr); # => [5, 4, 6]
यदि आप एक विषम ArrayList प्रिंट करने का प्रयास कर रहे हैं, तो वह भी काम करेगा:
ArrayList<> arr = new ArrayList<>(); arr.add(7); arr.add("Foo"); arr.add(12l); System.out.println(arr); # => [7, Foo, 12]
इस विधि का उपयोग कब करें
यह विधि उन स्थितियों के लिए सबसे उपयुक्त है जब आपके पास वस्तुओं की एक छोटी, सरल सूची हो और आप इसे डिबगिंग उद्देश्यों के लिए प्रिंट करना चाह रहे हों। ध्यान दें कि यह विधि पिछली वाली जितनी लचीली नहीं है, और आप आउटपुट डिवाइस पर प्रिंट होने वाली सामग्री को प्रारूपित नहीं कर सकते।
इसके अलावा, यदि सूची में कोई गैर-आदिम डेटा है, तो उसका मान डिवाइस पर प्रिंट नहीं होगा। इसके बजाय, मेमोरी में उसके स्थान का एक पॉइंटर प्रिंट किया जाएगा।
class Foo { int bar; public Foo(int bar){ this.bar = bar; }; } ArrayList<> arr = new ArrayList<>(); arr.add(4); arr.add(new Foo(40)); System.out.println(arr); # => [4, 34n2dsf@Foo];
विधि 3: toString() विधि को लागू करना
इस विधि में पिछली विधि की कमियां नहीं हैं। गैर-आदिम वस्तुओं को सीधे आउटपुट पर प्रिंट नहीं किया जा सकता क्योंकि कंपाइलर नहीं जानता कि उन्हें कैसे प्रिंट करना है। toString() विधि आपको कंपाइलर को बताती है कि क्लास की वस्तुओं को कमांड लाइन पर कैसे प्रिंट करना है।
आइए पिछले उदाहरण से Foo क्लास लेते हैं:
class Foo { int bar; public Foo(int bar){ this.bar = bar; }; }
इसे प्रिंट-फ्रेंडली बनाने के लिए, आपको क्लास परिभाषा में toString() विधि को ओवरराइड और परिभाषित करने की आवश्यकता है:
class Foo { int bar; public Foo(int bar){ this.bar = bar; }; public String toString() { return "Bar: " + String.valueOf(bar); } }
अब यदि आप Foo का एक उदाहरण बनाने का प्रयास करते हैं:
और इसे प्रिंट करते हैं:
आपको वह आउटपुट मिलेगा जिसे आपने पहले परिभाषित किया था:
toString() उदाहरण
आइए विधि 2 से अंतिम उदाहरण लें और इसे println-फ्रेंडली बनाएं:
class Foo { int bar; public Foo(int bar){ this.bar = bar; }; } ArrayList<> arr = new ArrayList<>(); arr.add(4); arr.add(new Foo(40)); System.out.println(arr); # => [4, Foo@2a139a55];
यहां आपको केवल एक ही बदलाव करने की आवश्यकता है, Foo क्लास में toString() परिभाषा जोड़ें:
class Foo { int bar; public Foo(int bar){ this.bar = bar; }; public String toString(){ return "Value: " + String.valueOf(bar); } } अब, println स्टेटमेंट वांछित आउटपुट देगा: // # => [4, Value: 40]
इस विधि का उपयोग कब करें
यह विधि उन स्थितियों के लिए उपयुक्त है जहां आपको विषम ArrayList प्रिंट करने की आवश्यकता है, या एक कस्टम क्लास से बने सजातीय ArrayList। क्लास में एकल विधि परिभाषा आपको उस परेशानी से बचाती है जिसका सामना आप for लूप का उपयोग करके करेंगे।
हालांकि, सरल स्थितियों में यह विधि ओवरकिल लग सकती है। यदि आपके पास तत्वों की एक छोटी सूची है, तो आप आसानी और तर्क में सरलता के लिए for लूप विधि के साथ जाने पर विचार कर सकते हैं।
निष्कर्ष
Java ArrayList प्रिंट करना एक सीधा कार्य नहीं है। ArrayList की सामग्री जितनी अधिक गतिशील होगी, सूची को मानक आउटपुट पर प्रिंट करना उतना ही कठिन होगा। println कमांड अधिकांश मामलों को कवर कर सकता है, लेकिन आपको काम पूरा करने के लिए toString() ओवरराइड की भी आवश्यकता हो सकती है।
इस लेख में, हमने ArrayList प्रिंट करने के तीन तरीकों को कवर किया। हमने उनके सिंटैक्स, उदाहरण, और उन स्थितियों को देखा जिनके लिए वे सबसे उपयुक्त हैं। अधिक उन्नत Java संसाधनों के लिए, Java सीखने के तरीके पर हमारी गाइड का पता लगाएं।