2011-11-17 9 views
6

असल में, उपयोगकर्ता एक स्ट्रिंग सबमिट करता है जो इटरेटर के लिए एक ArrayList खोजता है। जब इटरेटर स्ट्रिंग युक्त ऑब्जेक्ट को हटा देगा।जावा, एक ArrayList को खोजने और मिलान करने वाली वस्तुओं को हटाने के लिए इटरेटर का उपयोग

क्योंकि इनमें से प्रत्येक ऑब्जेक्ट में दो स्ट्रिंग्स हैं, मुझे इन पंक्तियों को एक के रूप में लिखने में परेशानी हो रही है।

Friend current = it.next(); 
String currently = current.getFriendCaption(); 

किसी भी मदद के लिए धन्यवाद!

+3

मुझे डर है कि सवाल ज्यादा समझ में नहीं आता है। आपको उन पंक्तियों को एक के रूप में लिखने की आवश्यकता क्यों है? –

+1

यह, मेरी मदद करो धन्यवाद है .. ^^ –

उत्तर

34

आप एक पंक्ति में उन्हें जरूरत नहीं है बस remove का उपयोग जब यह मेल खाता है एक आइटम को हटाने के लिए:

Iterator<Friend> it = list.iterator(); 
while (it.hasNext()) { 
    if (it.next().getFriendCaption().equals(targetCaption)) { 
     it.remove(); 
     // If you know it's unique, you could `break;` here 
    } 
} 

पूर्ण डेमो:

import java.util.*; 

public class ListExample { 
    public static final void main(String[] args) { 
     List<Friend> list = new ArrayList<Friend>(5); 
     String   targetCaption = "match"; 

     list.add(new Friend("match")); 
     list.add(new Friend("non-match")); 
     list.add(new Friend("match")); 
     list.add(new Friend("non-match")); 
     list.add(new Friend("match")); 

     System.out.println("Before:"); 
     for (Friend f : list) { 
      System.out.println(f.getFriendCaption()); 
     } 

     Iterator<Friend> it = list.iterator(); 
     while (it.hasNext()) { 
      if (it.next().getFriendCaption().equals(targetCaption)) { 
       it.remove(); 
       // If you know it's unique, you could `break;` here 
      } 
     } 

     System.out.println(); 
     System.out.println("After:"); 
     for (Friend f : list) { 
      System.out.println(f.getFriendCaption()); 
     } 

     System.exit(0); 
    } 

    private static class Friend { 
     private String friendCaption; 

     public Friend(String fc) { 
      this.friendCaption = fc; 
     } 

     public String getFriendCaption() { 
      return this.friendCaption; 
     } 

    } 
} 

आउटपुट:

$ java ListExample 
Before: 
match 
non-match 
match 
non-match 
match 

After: 
non-match 
non-match
+0

मैं अपने जवाब और बहुत बहुत धन्यवाद समझते हैं, मुद्दा यह है कि जब मैं टाइप 'अगर (it.next()। शामिल (पाठ)) {' यह नहीं करता है ' टी काम नहीं करते? मुझे केवल ऐरेलिस्ट में प्रत्येक ऑब्जेक्ट का एक निश्चित भाग (स्ट्रिंग कैप्शन) खोजना होगा। – Nayrdesign

+0

@Nayrdesign: सुनिश्चित करें कि आप 'Iterator' को सही तरीके से घोषित कर रहे हैं, और आप इसका इलाज कर रहे हैं कि यह सही तरीके से क्या करता है। उदाहरण के लिए, आपका उदाहरण वहां 'if (it.next()। (टेक्स्ट) है) {'' इटरेटर 'की तरह अभिनय कर रहा है तारों पर फिर से चल रहा है, लेकिन आपका प्रश्न यह' ऐरेलिस्ट 'जैसा दिखता है' मित्र 'ऑब्जेक्ट्स स्ट्रिंग नहीं। पूर्ण डेमो दिखाता है कि इसे सही तरीके से कैसे करें। कुंजी बिट 'Iterator 'घोषित कर रहा है, इसलिए' Iterator'' मित्र 'उदाहरणों पर पुनरावृत्ति कर रहा है, ताकि 'it.next()' 'Friend' होगा, तो आप' if (it.next() कर सकते हैं। getFriendCaption()। (टेक्स्ट) है) {'। –

+0

@TJCrowder मैं तुम्हारा के बाद वास्तव में मेरा कार्यक्रम मॉडलिंग की है, लेकिन मैं हो रही है: अपवाद सूत्र में "मुख्य" java.util.NoSuchElementException \t java.util.AbstractList $ Itr.next (AbstractList.java:350) \t RandomInt पर पर .messAroundWithListAgain (RandomInt.java:74) \t RandomInt.main (RandomInt.java:85) – hologram

संबंधित मुद्दे