CodeGym /Java Blog /अनियमित /जावा इटरेटर
John Squirrels
स्तर 41
San Francisco

जावा इटरेटर

अनियमित ग्रुप में प्रकाशित
नमस्ते! आज के पाठ में हम Java Iterator के बारे में बात करेंगे। कल्पना कीजिए कि आप पुस्तकालय में जाते हैं, और आप एक विशेष पुस्तक खोजना चाहते हैं। आप इसे कैसे करते हैं? यदि यह नॉन-फिक्शन है, तो डेवी डेसीमल सिस्टम है। यदि यह काल्पनिक है, तो उन्हें उनके अंतिम नाम के वर्णानुक्रम में क्रमबद्ध किया जाता है। आप जो कुछ भी खोज रहे हैं, किसी बिंदु पर, आपको एक-एक करके किताबों के माध्यम से जाना होगा जब तक कि आप जो खोज रहे हैं वह आपको नहीं मिल जाता। जब भी आपके पास जावा में चीजों का संग्रह होता है, चाहे वह एक ऐरे , एक ऐरेलिस्ट , एक कतार , या एक सूची में संग्रहीत हो , तो आप विशेष मूल्य कैसे प्राप्त करते हैं? किसी बिंदु पर, आपको एक बार में प्रत्येक तत्व से गुजरना होगा। जावा इटरेटर के लिए यही है।जावा इटरेटर का उपयोग कैसे करें: एक संक्षिप्त ट्यूटोरियल - 1

जावा में एक इटरेटर क्या है

जावा में एक इटरेटर क्या है? यह संग्रह में प्रत्येक तत्व को देखने का एक तरीका है। और संग्रह से हमारा मतलब संग्रह वर्ग में कुछ भी है। यह भी शामिल है:
  • सारणी सूची
  • हैशसेट
  • लिंक्ड हैशसेट
  • लिंक्ड सूची
  • प्राथमिकता कतार
  • वेक्टर
  • गंभीर प्रयास…
इसमें उन वर्गों के लिए विभिन्न इंटरफेस भी शामिल हैं, जैसे सेट , सूची , क्यू , डेक्यू , और सॉर्टेड सेट , कुछ नाम। Iterator<E> इंटरफ़ेस Iterator<E> वर्ग की सार्वजनिक इंटरफ़ेस विधि है। यह जावा 1.2 में लाया गया था और संग्रह में अनुक्रमिक तत्वों की जांच करने के तरीके के रूप में गणना को बदल दिया गया था।

आपको जावा में एक इटरेटर के रूप में फॉर लूप्स का उपयोग क्यों नहीं करना चाहिए

जावा में एक संग्रह के माध्यम से पुनरावृति करने के लिए सभी को सिखाया जाने वाला पहला तरीका लूप के लिए है। यह इस तरह दिख रहा है:

class Main {
  public static void main(String[] args) {
    int exampleArray[] = new int[10];

    //fill array with data

    for(int x = 0; x < exampleArray.length; x++) {
      System.out.println("Content of element " + x + "is: " + exampleArray[x]);
    }
  }
}
आउटपुट एक सूची होगी जो पढ़ती है:

Content of element 0 is: 0
Content of element 1 is: 1
Content of element 2 is: 2
etc.…
इसका उपयोग होता है, लेकिन क्या होता है यदि संग्रह इंडेक्स-आधारित सिस्टम में तत्वों को स्टोर नहीं करता है? उदाहरण के लिए, सेट के पास सामान्य रूप से कोई ऑर्डर नहीं होता है। इसलिए यह सलाह दी जाती है कि जावा में एक पुनरावर्तक के रूप में for लूप का उपयोग करने के अभ्यास से बाहर निकलें और इसके बजाय Iterator<E> वर्ग का उपयोग करके अभ्यास करें। यहाँ कुछ जावा इटरेटर उदाहरण हैं।

जावा में इटरेटर का उपयोग कैसे करें

यहाँ जावा में इटरेटर का उपयोग करने के कुछ उदाहरण दिए गए हैं। इटरेटर वर्ग का उपयोग करते समय, संग्रह को पार करने के तीन तरीके होते हैं। आप थोड़ी देर () लूप, एक के लिए () लूप और एक फॉरएच () लूप का उपयोग कर सकते हैं। ध्यान दें कि यह for लूप उस से अलग है जिसके बारे में हमने पहले बात की थी। यहाँ तीन अलग-अलग जावा इटरेटर उदाहरण हैं। सबसे पहले, चलो संग्रह को फिर से शुरू करने के लिए सेट अप करें।

import java.util.*; // imports ArrayList, Collection and Iterator

class Main {
  public static void main(String[] args) {
    Collection<String> example = new ArrayList<String>();

    example.add("Item 1");
    example.add("Item 2");
    example.add("Item 3");
    example.add("Item 4");
  }
}
यह एक साधारण संग्रह है जो एक ArrayList से बना है जिसमें हमने चार आइटम लोड किए हैं। आइए अब ArrayList को पार करने के लिए Iterator वर्ग का उपयोग करने के तीन तरीकों को देखें ।

घुमाव के दौरान


Iterator<String> iterator = example.iterator();

while (iterator.hasNext()) {
   System.out.println("Element Value= " + iterator.next());
}
यह जबकि () लूप इटरेटर वर्ग के .hasNext () बूलियन विधि का उपयोग यह देखने के लिए करता है कि भविष्य में कोई तत्व है या नहीं। यदि पूर्व शर्त सत्य है, तो यह आगे बढ़ता है। यदि यह असत्य के रूप में वापस आता है, तो लूप समाप्त हो जाता है। यहाँ मुख्य भाग यह है कि .hasNext() और .next() विधियाँ दोनों पहले तत्व की प्रारंभिक जाँच करती हैं। यदि संग्रह खाली है और कोई पहला तत्व नहीं है, तो विधि .hasNext() के लिए झूठी वापसी करती है और .next() विधि के लिए NoSuchElementException फेंक देगी ।

पाश के लिए


for (Iterator<String> iterator = example.iterator(); iterator.hasNext();) {
  System.out.println("Element Value= " + iterator.next());
}
यह लूप के लिए अधिक पारंपरिक जैसा दिखता है। यह .hasNext() विधि का उपयोग स्थिति की जांच और परिवर्तन भाग के रूप में करता है। इनिशियलाइज़ेशन इटरेटर को कॉल है।

के लिए: प्रत्येक पाश


for (String s : example) {
  System.out.println("Element Value= " + s);
}
फॉर : प्रत्येक लूप एक फॉर लूप है, लेकिन यदि आप इसे पढ़ना नहीं जानते हैं, तो यह थोड़ा भ्रमित करने वाला हो सकता है। For:प्रत्येक लूप का सिंटैक्स for (data_type variableName : collectionName){body} है । यह for:प्रत्येक लूप में कुछ कमियां हैं। सबसे पहले, यह केवल संग्रह को एक दिशा में पार कर सकता है। दूसरा, आपको प्रत्येक तत्व के माध्यम से पुनरावृति करनी होगी। आप उनमें से किसी को भी छोड़ नहीं सकते। लेकिन जावा में एक सुविधाजनक सूची पुनरावर्तक के रूप में, यह सबसे अच्छा विकल्प है। प्लस साइड पर, के लिए: प्रत्येक लूप को पढ़ना बहुत आसान है और एक बार जब आप इसे जान लेते हैं, तो गलत होना मुश्किल होता है। यदि आप सोच रहे हैं कि तीन इटरेटर लूप का आउटपुट क्या है, तो वे सभी समान हैं:

Element Value= Item 1
Element Value= Item 2
Element Value= Item 3
Element Value= Item 4 

जावा फॉर मैप्स में इटरेटर का उपयोग कैसे करें

मानचित्र डेटा संग्रहीत करने का एक लोकप्रिय तरीका है, लेकिन क्योंकि वे संग्रह का विस्तार नहीं करते हैं , आप किसी मानचित्र को सीधे पार करने के लिए पिछले पुनरावृत्तियों का उपयोग नहीं कर सकते। तो मानचित्र और हैश मैप के माध्यम से जाने के लिए आप जावा में इटरेटर का उपयोग कैसे करते हैं ? चार अच्छे जावा मैप इटरेटर तरीके हैं। हम उन्हें अलग-अलग कवर करेंगे। सबसे पहले, मूल्यों की एक श्रृंखला के साथ एक नक्शा लोड करते हैं।

import java.util.*; //imports Map and HashMap

class Main {
  public static void main(String[] args) {
    Map<String, String> example = new HashMap<String, String>();

    example.put("alpha", "one");
    example.put("beta", "two");
    example.put("gamma", "three");

  }
}

जावा हैशमैप इटरेटर विधि: प्रत्येक के लिए (कार्रवाई)


example.forEach((k,v) -> System.out.println("Key: "+ k + ", Value: " + v));
यह विधि पुनरावृति करने के लिए एक लैम्ब्डा अभिव्यक्ति का उपयोग करती है। लैम्ब्डा ऑपरेटर फॉरएच () विधि है, और शरीर मूल्यों को प्रिंट करता है। यह एक बहु पैरामीटर ऑपरेटर का उपयोग करता है। जावा 8 में मैप इटरेटर के लिए यह सबसे तेज़ और साफ तरीका है।

जावा हैशमैप इटरेटर विधि: प्रत्येक () लूप के लिए


for (Map.Entry<String, String> iterate : example.entrySet()) {
  System.out.println("Key: " + iterate.getKey() + ", Value: " + iterate.getValue());
}
यह इसके लिए उपयोग करता है: प्रत्येक सिंटैक्स एंट्रीसेट () विधि को कॉल करने के लिए एक सेट को वापस करने के लिए जिसमें कुंजी और मान इसके तत्वों के रूप में हैं। इसके अतिरिक्त, .Entry() विधि का उपयोग करते समय , ऑब्जेक्ट केवल तभी सत्य होते हैं जब यह पुनरावृत्ति हो रही हो।

Java Hashmap Iterator मेथड: Map.Entry<k, v>


Iterator<Map.Entry<String, String>> iterator = example.entrySet().iterator();

while(iterator.hasNext()){
  Map.Entry<String, String> element = iterator.next();
  System.out.println("Key: " + element.getKey() + ", Value: " + element.getValue());
)
यह विधि संग्रह इटरेटर और विधियों का उपयोग करने के लिए मानचित्र को फिर से एक सेट में परिवर्तित करती है। इन तीन पुनरावर्तक विधियों के लिए, रिटर्न इस तरह दिखता है:

Key: alpha, Value: one
Key: beta, Value: two
Key: gamma, Value: three
Java Hashmap Iterator Method: keySet() and values()
for (String key : example.keySet()) {
  System.out.println("Key: " + key);
}
for (String value : example.values()) {
  System.out.println("Value: " + value);
}
यह तत्वों को एक अलग तरीके से लौटाता है। यह पहले सभी कुंजियों को क्रम में लौटाएगा और फिर सभी मान:

Key: alpha
Key: beta
Key: gamma
Value: one
Value: two
Value: three
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION