java - When removing inside foreach, do we need to step back -


इस जावा कोड को ले लो:

  के लिए (संपर्कसंपूर्ण संपर्कः सभी संपर्क) {... ....... allcontacts.remove (curContact); }  

मैं एक शर्त के आधार पर करूँगा जो एक निष्कासन होगा, क्या अगली वस्तु अगले आइटम को क्रम में याद करती है, और क्या हमें पीछे हटने की जरूरत है (किसी तरह)?

यह कोड अधिकांश संग्रहों के साथ टूट जाएगा - कुछ संचितों के अलावा जैसे कि java.util.concurrent

  • स्पष्ट रूप से एक थियेटर का उपयोग करें (कॉल इटरेटर ()

    कुछ विकल्प:

    • कोड को संग्रहित करने के बजाय), और किसी आइटम को निकालने के लिए iterator.remove () कॉल करें
    • लूप के लिए एक सादे का उपयोग करें, आगे बढ़ने और आगे बढ़ने के लिए

Comments