CodeGym /Java Blog /यादृच्छिक /जावा इटरेटर
John Squirrels
पातळी 41
San Francisco

जावा इटरेटर

यादृच्छिक या ग्रुपमध्ये प्रकाशित केले
हाय! आजच्या धड्यात आपण Java Iterator बद्दल बोलू. कल्पना करा की तुम्ही लायब्ररीत जाता आणि तुम्हाला एखादे विशिष्ट पुस्तक शोधायचे आहे. तुम्ही ते कसे करता? जर ते गैर-काल्पनिक असेल तर, डेवी दशांश प्रणाली आहे. जर ते काल्पनिक असेल, तर ते त्यांच्या आडनावानुसार वर्णमाला क्रमाने लावले जातात. तुम्ही जे काही शोधत आहात, कधीतरी, तुम्ही जे शोधत आहात ते सापडत नाही तोपर्यंत तुम्हाला एका वेळी एक पुस्तकं पाहावी लागतील. जेव्हा जेव्हा तुमच्याकडे Java मध्ये गोष्टींचा संग्रह असतो, मग तो Array , ArrayList , Queue , किंवा List मध्ये संग्रहित असला तरीही , तुम्हाला विशिष्ट मूल्य कसे मिळेल? एखाद्या वेळी, तुम्हाला प्रत्येक घटकातून एका वेळी जावे लागेल. जावा इटरेटर यासाठी आहे.जावा इटरेटर कसे वापरावे: एक संक्षिप्त ट्यूटोरियल - १

जावा मध्ये इटरेटर म्हणजे काय

जावा मध्ये पुनरावृत्ती करणारा काय आहे? संग्रहातील प्रत्येक घटकाकडे पाहण्याचा हा एक मार्ग आहे. आणि कलेक्शन म्हणजे कलेक्शन क्लासमधले काहीही. यासहीत:
  • अॅरेलिस्ट
  • हॅशसेट
  • LinkedHashSet
  • लिंक्डलिस्ट
  • प्राधान्य रांग
  • वेक्टर
  • आणि इतर अनेक…
यात त्या वर्गांसाठी विविध इंटरफेस देखील समाविष्ट आहेत, जसे की सेट , लिस्ट , क्यू , डेक्यू , आणि सॉर्टेड सेट , काही नावे. Iterator<E> ही इंटरफेस Iterator<E> वर्गाची सार्वजनिक इंटरफेस पद्धत आहे. हे Java 1.2 मध्ये आणले गेले आणि संग्रहातील अनुक्रमिक घटकांचे परीक्षण करण्याचा एक मार्ग म्हणून गणनेची जागा घेतली.

जावामध्ये इटरेटर म्हणून तुम्ही लूपसाठी का वापरू नये

Java मधील संग्रहाद्वारे प्रत्येकाला पुनरावृत्ती करण्यास शिकवले जाणारे पहिले मार्ग म्हणजे लूप. हे असे दिसते:

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.…
याचे त्याचे उपयोग आहेत, परंतु संग्रहाने अनुक्रमणिका-आधारित प्रणालीमध्ये घटक संचयित केले नाही तर काय होईल? उदाहरणार्थ, Set s ला सामान्यपणे ऑर्डर नसते. त्यामुळे जावामध्ये इटरेटर म्हणून फॉर लूप वापरण्याच्या सरावातून बाहेर पडणे आणि त्याऐवजी इटरेटर<E> क्लास वापरण्याचा सराव करणे उचित आहे. येथे काही जावा इटरेटर उदाहरणे आहेत.

जावा मध्ये इटरेटर कसे वापरावे

जावा मध्ये इटरेटर कसे वापरायचे याची काही उदाहरणे येथे आहेत. इटरेटर क्लास वापरताना, संग्रह पार करण्याचे तीन मार्ग आहेत. तुम्ही थोडावेळ() लूप, a for() लूप आणि forEach() लूप वापरू शकता . लक्षात घ्या की लूपसाठी हे आपण आधी बोललेल्यापेक्षा वेगळे आहे. येथे तीन भिन्न जावा इटरेटर उदाहरणे आहेत. प्रथम, पुनरावृत्ती करण्यासाठी संग्रह सेट करूया .

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 क्लास वापरण्याच्या तीन पद्धती पाहू .

while() loop


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

while (iterator.hasNext()) {
   System.out.println("Element Value= " + iterator.next());
}
भविष्यातील घटक आहे की नाही हे तपासण्यासाठी हे while() लूप इटरेटर क्लासची .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:Each loop चा सिंटॅक्स (data_type variableName : collectionName){ body} साठी आहे . यासाठी : प्रत्येक लूपमध्ये काही कमतरता आहेत. प्रथम, ते केवळ एका दिशेने संकलन पार करू शकते. दुसरे, आपल्याला प्रत्येक घटकाद्वारे पुनरावृत्ती करावी लागेल. आपण त्यापैकी काहीही वगळू शकत नाही. परंतु Java मध्ये सोयीस्कर यादी पुनरावृत्ती करणारा म्हणून, तो सर्वोत्तम पर्याय आहे. अधिक बाजूने, for:each loop वाचणे खूप सोपे आहे आणि एकदा तुम्हाला ते कळले की, चूक होणे कठीण आहे. तीन इटरेटर लूपचे आउटपुट काय आहे हे आपण विचार करत असल्यास, ते सर्व समान आहेत:

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

नकाशेसाठी Java मध्ये इटरेटर कसे वापरावे

नकाशे हा डेटा संचयित करण्याचा एक लोकप्रिय मार्ग आहे, परंतु ते संग्रह विस्तारित करत नसल्यामुळे , तुम्ही नकाशावर थेट मार्गक्रमण करण्यासाठी मागील पुनरावृत्तीचा वापर करू शकत नाही. मग तुम्ही मॅप s आणि हॅशमॅप s मधून जाण्यासाठी जावामध्ये इटरेटर कसा वापराल ? चार चांगल्या जावा मॅप इटरेटर पद्धती आहेत. आम्ही त्यांना वैयक्तिकरित्या कव्हर करू. प्रथम, मूल्यांच्या मालिकेसह नकाशा लोड करूया.

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));
ही पद्धत पुनरावृत्ती करण्यासाठी लॅम्बडा अभिव्यक्ती वापरते. lambda ऑपरेटर forEach() पद्धत आहे आणि मुख्य भाग मूल्ये छापतो. हे एकाधिक पॅरामीटर ऑपरेटर वापरते. Java 8 मधील नकाशा पुनरावृत्तीसाठी ही सर्वात जलद आणि स्वच्छ पद्धत आहे.

जावा हॅशमॅप इटरेटर पद्धत: साठी:प्रत्येक() लूप


for (Map.Entry<String, String> iterate : example.entrySet()) {
  System.out.println("Key: " + iterate.getKey() + ", Value: " + iterate.getValue());
}
हे घटक म्हणून की आणि मूल्य असलेला संच परत करण्यासाठी entrySet() पद्धतीला कॉल करण्यासाठी For:Each syntax वापरते. याव्यतिरिक्त, .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