Iterator के साथ कक्षाओं के ArrayList में जावा खोज आइटम [डुप्लिकेट]

Oct 15 2020

मुझे इसका एक ट्यूटोरियल नहीं मिल रहा है, हर ट्यूटोरियल स्ट्रिंग्स के एक ArrayList का उपयोग करता है।

मान लीजिए कि आपके पास एक वर्ग का व्यक्ति है जिसमें नाम सहित कई विशेषताएं हैं।

class person
{
    public String name;
    public int age;
    public int weight;
    public String hair_colour;
    public String eye_colour;
 };

आपके पास व्यक्तियों का एक ArrayList है और आप इस ArrayList में एक व्यक्ति को खोजना चाहते हैं और आपके पास केवल उनका नाम है।

ArrayList<person> people = new ArrayList<person>();

मुझे "फ्रेड" कैसे मिलेगा?

मुझे पता है कि सूची में सभी वस्तुओं को लूप करना संभव है, लेकिन मैं एक Iterator के साथ इसे ठीक से करना चाहता हूं।

किसी को भी एक ट्यूटोरियल के बारे में बताने के लिए कि कैसे एक ArrayList पर एक Iterator का उपयोग करके उस आइटम की सिर्फ एक विशेषता का उपयोग करके एक आइटम खोजने के लिए करना है?

या यह सिर्फ संभव नहीं है? क्या मैंने Iterator को गलत समझा है?

जवाब

1 RohanKumar Oct 15 2020 at 10:07

जैसा कि टिप्पणियों में बताया गया है, इट्रिटर अप्रोच बहुत हद तक वैसी ही है जैसी आप स्टैंडर्ड लूप्स के साथ करते हैं:

public static Person findPersonByName(List<Person> list, String name) {
    Iterator<Person> it = list.iterator();
    while (it.hasNext()) {
      Person p = it.next();
      if (p.getName().equals(name)) { // Person found, return object
        return p;
      }
    }
    return null; // Not found return NULL
}

यदि आप जावा 8 और इसके बाद के संस्करण का उपयोग कर रहे हैं, तो शायद आप धाराएँ () आज़मा सकते हैं, वे इसे बहुत कॉम्पैक्ट बनाते हैं:

public static Person findPersonByName(List<Person> list, String name) {
  return list.stream().filter(p -> name.equals(p.getName())).findFirst().orElse(null);
}