2012-02-11 14 views
5

मैं thisसंशोधित जावा ArrayList पर

के लिए इसी तरह कुछ करने के लिए हालांकि चाहते पुनरावृत्ति करते हुए, मैं चाहता हूँ जोड़ा तत्वों से अधिक दोहराया जा सकता है। असल में मेरे पास अंतर्निहित सरणीसूची है, और मैं सरणीसूची पर एक इटरेटर लौटाता हूं। उस इटरेटर का उपयोग करते हुए पुनरावृत्ति करते समय, मैं मूल सरणी सूची में तत्व जोड़ना चाहता हूं। मैं यह कैसे करु?

संपादित करें: इसके साथ समस्या यह है कि मुझे पुनरावृत्त कोड द्वारा संशोधित पुनरावर्तक में ऑब्जेक्ट्स की आवश्यकता है। मुझे नहीं लगता कि सरणी सूची क्लोनिंग काम करेगी ...

EDIT2: यहां मेरे कोड का एक अलग-अलग संस्करण है।

public class Map { 
    // a bunch of code 
    private ArrayList<Robot> robots; 

    public Iterator<Robot> getRobots() { 
      return robots.iterator(); 
    } 

    public void buildNewRobot(params) { 
      if(bunchOfConditions) 
       robots.add(new Robot(otherParams); 
    } 

    // a bunch more code 
} 

और यहां नक्शा किसी अन्य वर्ग में उपयोग किया जा रहा है।

for(Iterator<Robot> it = map.iterator(); it.hasNext();){ 
    Robot r = it.next(); 
    // a bunch of stuff here 
    // some of this code modifies Robot r 

    if(condition) 
     map.buildNewRobot(params); 
} 
+1

यदि आप प्रासंगिक कोड – ggreiner

+0

जोड़ा गया कोड प्रदान करते हैं तो यह सहायक होगा। इसे छोड़ने के लिए खेद है। – BlackSheep

उत्तर

5

आप अपनी सूची की एक प्रति बना सकते हैं और प्रतिलिपि पर पुनरावृत्ति कर सकते हैं और पुराने को डेटा जोड़ सकते हैं। समस्या यह है कि आप नए इटेंस पर फिर से नहीं चलेगा।

+0

थोड़ा और काम, लेकिन आप एक वेरिएबल रख सकते हैं जो सत्य से झूठ तक जाता है, जब कोई बदलाव नहीं होता है, f.e. जबकि (परिवर्तन) => एक प्रतिलिपि बनाते हैं, झूठ में परिवर्तन सेट करते हैं, प्रक्रिया करते हैं, अगर कुछ जोड़ा या बदला जाता है, तो आप इसे सही में बदल देते हैं, अन्यथा प्रक्रिया समाप्त हो जाएगी, – Jonathan

+0

यह शायद संभालने का सबसे साफ और सुरक्षित तरीका है पुनरावृत्त करते समय एक सरणीसूची के सदस्य। मैंने इस तकनीक का इस्तेमाल किया और स्थिरता देखी – Steer360

0

यह आपको हेप कर सकता है।

ArraList<E> a = new ArrayList<E>(); 
Iteratore<E> i = a.iterator(); 
loop(check condition){ 
    if(satisfied){ 
     a.add(E e); 
    } 
}