å¢å¼ºfor循ç¯äº¦ä¸ºé«çº§for循ç¯ã
å¢å¼ºfor循ç¯å é¨æ¯ä½¿ç¨çIteratoræ¥éåçï¼åªè½éåæ°ç»åå®ç°äºIterableæ¥å£çéåãä¼ç¹æ¯åæ³ç®ä¾¿ï¼æ éè·å¾æ°ç»ãéåé¿åº¦ï¼ä¹æ éæ ¹æ®ç´¢å¼æ¥è®¿é®å ç´ ã缺ç¹æ¯ä¸è½å¨å¾ªç¯éå¨æçå é¤å ç´ åè·åå ç´ ä¸æ ã
ä»»ä½çå¢å¼ºfor循ç¯é½å¯ä»¥æ¹å为æ®éfor循ç¯ãéåéåææå ç´ çè¯ç¨å¢å¼ºfor循ç¯æ´å ç®æ´ï¼å¦ææ¯å¤æç循ç¯ï¼è¿æ¯ç¨for循ç¯æ¯è¾å¥½ï¼for循ç¯åæ¯æç´¢å¼åå ç´ ï¼å¯ä»¥ä½¿ç¨ä¸æ æ¥æ§å¶ä½ç½®ã
é«çº§foræä¸ä¸ªå±éæ§ï¼å¿
é¡»æ被éåçç®æ ã
建议å¨éåæ°ç»çæ¶åï¼è¿æ¯å¸æ使ç¨ä¼ ç»forï¼å ä¸ºä¼ ç»forå¯ä»¥å®ä¹è§æ ã
å¡æ¯æ¯æè¿ä»£å¨çé½æ¯æé«çº§for
.èå¯¹äº LinkedList ç±äºè·åä¸ä¸ªå ç´ ï¼è¦ä»å¤´å¼å§ååæ¾ï¼å æ¤å»ºè®®ä½¿ç¨ å¢å¼ºfor循ç¯ï¼ä¹å°±æ¯iteratorã
ä¸é¢ç¨ä¸ä¸ªä¾å说æè¿ç¹:
代ç ä¸
public static void removeEvensVer2(List<Integer> lst)
{
for (Integer x : lst)
if (x % 2 == 0)
lst.remove(x);
System.out.println(lst);
}
public static void removeEvensVer2(List<Integer> lst)代ç äº
public static void removeEvensVer3(List<Integer> lst)
{
Iterator<Integer> itr = lst.iterator();
while (itr.hasNext())
if (itr.next() % 2 == 0)
itr.remove();
System.out.println(lst);
}
public static void removeEvensVer3(List<Integer> lst)åå åæï¼å 为å¢å¼ºçfor循ç¯å
é¨å°±æ¯è°ç¨iteratorå®ç°çï¼å¨éåçæ¶åå°±å°list转å为äºè¿ä»£å¨ï¼å½è¿ä»£å¨è¢«å建ä¹åï¼å¦æä»ç»æä¸å¯¹å表修æ¹é¤ééè¿è¿ä»£å¨èªèº«çremoveãaddæ¹æ³ï¼å
¶ä»ä»»ä½æ¶é´ä»»ä½æ¹å¼çä¿®æ¹ï¼è¿ä»£å¨é½ä¼æåºConcurrentModificationExceptionå¼å¸¸ã